sed是一种非交互式的流编辑器,可动态编辑文件。
非交互式是说:sed和传统文本编辑器不同,并非和使用者直接互动,sed处理的对象是文件的数据流(stream流)。
sed的工作模式是对比每一数据行,若如何样式,就执行指定的操作。
语法格式:
sed '样式命令' 文件
如果文件中某一行符合“样式命令”,就执行指定的sed命令,如删除(d)、替换(s)、输出(p).
这里的“样式命令”使用一对//括起来,表示寻找。
例如:
1、/1,6/,表示1到6行
2、/AAA/,/DDD/,表示从含有字符AAA的行到含有字符DDD的行
注意:sed并不会更改文件的内容。sed的工作方式是读取文件内容,经流编辑之后将结果输出到标准输出。因此,如果想要保存sed处理结果,需要自行运用转向处理。
example:
1、删除某一范围的数据行
sed '1,4d' filepath
2、删除含有指定“样式”的行
sed '/styleText/d' filepath
3、删除空白行
sed '/^$/d' filepath
4、删除非指定“样式”的行
sed '/styleText/!d' filepath
5、输出匹配“样式”的行
sed -n '/styleText/p' filepath
指令p会把当前的数据显示出来,但因为sed默认也会显示不符合的数据行,所以需要配合选项"-n".
-n:抑制显示不符合的数据行。
6、删除每一行开头的3个字符
sed 's/^...//' filepath
7、取得符合样式的字符串
sed -n 's/\(styleText\)/\1string/p' filepath
()用来存储匹配的字符
\1取得之前匹配的字符
8、找到匹配的数据行,再进行替换指令
sed -n '/AAA/s/123/456/p' filepath
找到含有AAA的行,替换123为456
9、在指定行进行替换指令
sed -n '2,4s/123/456/p' filepath
在第2到4行,将123替换为456
awk待续