sed
sed [option] '[lines] [!]command[/RE1/RE2/][flag] [newfile]' file
-e s g
-n d "num"
-f w w
p p
q
a
i
c
实例:
- -e: sed -e 's/RE1/RE2/' -e 's/RE3/RE4/' file1 file2; 等价于: sed 's/RE1/RE2/; s/RE3/RE4/' file1 file2
- num: sed 's/RE1/RE2/2' file1; 只将file1每行中第2次出现的RE1替换为RE2
- -f: sed -f sedcommandscript file; 从sedcommandscript的每行中读入sed命令作用于file
- lines: sed '3 s/a/A/' file; 只对file的第3行操作
- lines: sed '/^g/ s/a/A/' file; 只对以g开头的行操作
- lines: sed '5,10 s/a/A/' file; 只对5至10行操作
- lines: sed '5,$ s/a/A/' file; 操作从第5行开始到结束,$表示结束
- lines: sed '5,/end/ s/a/A/' file; 从第5行开始至以后第一个含有end的行结束
- lines: sed '/start/,/stop/ s/a/A/' file; 对file中的每一行检测,字符start和stop就像操作的开关,一个文件中可以有多个开关,实验: echo 1a,1a,2a,2a,1a,2a,1a,3a|tr , '\n'|sed '/1/,/2/ s/a/z/'
- d: sed '/start,/stop/ d'; d: 删除行,所有有关lines的表达式都适用
- w: sed 's/RE1/RE2/w newfile' file; 将经过改动的行写入文件newfile
- w: sed 's/RE1/RE2; w newfile' file; 将经过改动的和没有经过改动的行都写入文件newfile, 且该命令的结果与命令11的结果不同
- w: sed '/start/,/stop/ w newfile' file; 所有有关lines的表达式对w都适用
- p: p的用法与w类似,但command p经常与option -n组合使用
- q: /line/q, quit; echo 1a,2a,3a,4a|tr , '\n'|sed '3q; sed/a/x/' 与 sed 'sed/a/x/; 3q'的输出结果最后一行不同;q前面只应匹配一个地址
- a: sed '[lines] a string'; 在匹配行的后面插入一行;如果省略lines,就在所有行后面插入
- i: sed '[lines] i string'; 在匹配行的前面插入一行
- c: sed '[lines] c string'; 改写匹配行