简介

sed 采用的是流编辑模式:
最明显的特点是,在 sed 处理数据之前,需要预先提供一组规则,sed 会按照此规则来编辑数据。 sed 会根据脚本命令来处理文本文件中的数据,这些命令要么从命令行中输入,要么存储在一个文本文件中。 此命令执行数据的顺序如下:
1. 每次仅读取一行内容。根据提供的规则命令匹配并修改数据。
注意,sed 默认不会直接修改源文件数据,而是会将数据复制到缓冲区中,修改也仅限于缓冲区中的数据;
2. 将执行结果输出。
3. 当一行数据匹配完成后,它会继续读取下一行数据,并重复这个过程,直到将文件中所有数据处理完毕。

sed 基本选项

sed [选项] [脚本命令] 文件名

	选项
-e 脚本命令,该选项会将其后跟的脚本命令添加到已有的命令中。 -f 脚本命令文件,该选项会将其后文件中的脚本命令添加到已有的命令中。 -n 默认情况下,sed 会在所有的脚本指定执行完毕后,会自动输出处理后的内容,
而该选项会屏蔽启动输出,需使用 print 命令来完成输出。 -i 此选项会直接修改源文件,要慎用。

查找替换

s
查找替换脚本命令。此命令的基本格式为:
[address]s/pattern/replacement/flags address 表示指定要操作的具体行,
pattern 指的是需要替换的内容,
replacement 指的是要替换的新内容。 flags标记
选项
n 1~512 之间的数字,表示指定要替换的字符串出现第几次时才进行替换,
例如,一行中有 3 个 A,但用户只想替换第二个 A,这是就用到这个标记; g 对数据中所有匹配到的内容进行替换,
如果没有 g,则只会在第一次匹配成功时做替换操作。
p 会打印与替换命令中指定的模式匹配的行。此标记通常与 -n 选项一起使用。
w file 将缓冲区中的内容写到指定的 file 文件中;
& 用正则表达式匹配的内容进行替换;
\n 匹配第 n 个子串,该子串之前在 pattern 中用 \(\) 指定。
\ 转义(转义替换部分包含:&、\等)。 sed -n "s/aa[a-z]aa/aa666aa/p" ld
查找替换并打印

常见命令

a\string  在当前行后添加一行或多行。多行时除最后一行外,每行末尾需用“\”续行

c\  用此符号后的新文本替换当前行中的文本。多行时除最后一行外,每行末尾需用"\"续行

i\  在当前行之前插入文本。多行时除最后一行外,每行末尾需用"\"续行

d   删除行

h   把模式空间里的内容复制到暂存缓冲区

H   把模式空间里的内容追加到暂存缓冲区

g   把暂存缓冲区里的内容复制到模式空间,覆盖原有的内容

G   把暂存缓冲区的内容追加到模式空间里,追加在原有内容的后面

l   列出非打印字符

p   打印行

n   读入下一输入行,并从下一条命令而不是第一条命令开始对其的处理

q   结束或退出sed

r   从文件中读取输入行

!   对所选行以外的所有行应用命令

s   用一个字符串替换另一个

g   在行内进行全局替换

w   将所选的行写入文件

x   交换暂存缓冲区与模式空间的内容

y   将字符替换为另一字符(不能对正则表达式使用y命令)

示例

sed "2d" ld
删除第二行 sed "/[0-9]/d" ld
用正则匹配数字的行并删除 sed "/12/d" ld
匹配12的行并删除

sed 一 文本处理工具的更多相关文章

  1. Pyp 替代sed,awk的文本处理工具

    Linux上文本处理工具虽不少,像cut,tr,join,split,paste,sort,uniq,sed,awk这些经典工具让人眼花缭乱,而且都太老了,使用方法都不太人性化,尤其awk,语法简直反 ...

  2. 三大文本处理工具grep、sed及awk的简单介绍

    grep.sed和awk都是文本处理工具,虽然都是文本处理工具单却都有各自的优缺点,一种文本处理命令是不能被另一个完全替换的,否则也不会出现三个文本处理命令了.只不过,相比较而言,sed和awk功能更 ...

  3. 轻松学会文本处理工具之二 linux sed命令

    sed命令的语法格式: sed的命令格式: sed [option]  'sed command'filename sed的脚本格式:sed [option] -f  'sed  script'fil ...

  4. 【Linux】 字符串和文本处理工具 grep & sed & awk

    Linux字符串&文本处理工具 因为用linux的时候主要用到的还是字符交互界面,所以对字符串的处理变得十分重要.这篇介绍三个常用的字符串处理工具,包括grep,sed和awk ■ grep ...

  5. Linux的文本处理工具浅谈-awk sed grep

    Linux的文本处理工具浅谈 awk   老大 [功能说明] 用于文本处理的语言(取行,过滤),支持正则 NR代表行数,$n取某一列,$NF最后一列 NR==20,NR==30 从20行到30行 FS ...

  6. Linux 文本处理工具grep,sed,awk

    grep.sed和awk都是文本处理工具,虽然都是文本处理工具单却都有各自的优缺点,一种文本处理命令是不能被另一个完全替换的,否则也不会出现三个文本处理命令了.只不过,相比较而言,sed和awk功能更 ...

  7. shell之三大文本处理工具grep、sed及awk

    grep.sed和awk都是文本处理工具,虽然都是文本处理工具单却都有各自的优缺点,一种文本处理命令是不能被另一个完全替换的,否则也不会出现三个文本处理命令了.只不过,相比较而言,sed和awk功能更 ...

  8. Shell 编程 文本处理工具 sed

    本篇主要写一些shell脚本文本处理工具sed的使用. 概述 sed(Stream EDitor)是一个强大而简单的文本解析转换工具,可以读取文本,并根据指定的条件对文本内容进行编辑(删除.替换.添加 ...

  9. 文本处理工具sed

    处理文本的工具sed  行编辑器 ,默认自带循环. sed是一种流编辑器,它一次处理一行内容. 功能:主要用来自动编辑一个或多个文件,简化对文件的反复操作,编写转换程序等 sed工具 用法: sed ...

随机推荐

  1. 你不知道的USB

    USB的接口类型.定义和原理 目前USB接口类型已经更新到了USB3.1和USB Type-C类型,下面就对USB的类型进行介绍整理 一.UCB的通信协议类型 1.1 USB定义及类型 USB(Uni ...

  2. shell 符号的定义(一)

    在shell中,在判断数值大小除了可以用”(( ))”的形式外,还可以使用”[ ]”.但是就不能使用>, < , = 这样的符号了,要使用 -lt (小于),-gt (大于),-le (小 ...

  3. Android jniLibs下目录详解(.so文件)

    http://www.jianshu.com/p/b758e36ae9b5 最近又研究了一下,参考了一下:三星/联发科等处理器规格表 更新时间:2017年5月手机CPU架构体系分类及各大厂商 PS:我 ...

  4. javascript笔记 (持续更新)

    1. 语言主要分为两大类:编译型语言和解释型语言. 对于静态语言来说(如Java.C++.C),处理上述这些事情的叫编译器(Compiler),相应地对于JavaScript这样的动态语言则叫解释器( ...

  5. ES5的 forEach, map 方法的实现

    如果浏览器不支持forEach,map方法, 要我们自己封装一个, 该怎么操作呢? 1. forEach Array.prototype.forEach = function(fn) { if (th ...

  6. linux上安装php phpredis扩展

    linux 下安装redis以及php Redis扩展 环境配置: centos6.0 nginx/1.0.0 php/5.3.8 mysql/5.5.17 步骤一.下载redis 可以去http:/ ...

  7. MySQL - primary key PK unique key,key PK index

    primary key PK unique key 总结 primary key = unique + not null 主键不能为空每个字段值都不重复,unique可以为空,非空字段不重复 uniq ...

  8. cookie和session 的初步介绍

    Cookie和Session http协议不保存用户状态(信息) Cookie和Session都是为了能够保存用户信息 Cookie: 本质:保存在浏览器上的键值对 用途:标识当前用户信息 cooki ...

  9. MaxCompute新功能发布

    2018年Q3 MaxCompute重磅发布了一系列新功能. 本文对主要新功能和增强功能进行了概述. 实时交互式查询:Lightning on MaxCompute 生态兼容:Spark on Max ...

  10. FFT快速傅里叶模板

    FFT快速傅里叶模板…… /* use way: assign : h(x) = f(x) * g(x) f(x):len1 g(x):len2 1. len = 1; while(len < ...