sed的基础语法格式:sed [-nefr][n1,n2] action
参数说明:
其中第一部分[-nefr]:
- -n:安静模式,只有经过sed处理过的行才显示,其他的不显示,前一篇文章已经介绍过了;
- -e:默认选项,表示直接在命令行模式进行sed操作;
- -f:跟awk类似,可以将sed命令写入文件,用-f filename调用执行;
- -r:使sed支持扩展正则表达式;
第二部分[n1,n2]:
- n1,n2:可选项,指定要进行处理的行
第三部分action,常用的如下:
- p:表示打印,打印指定的数据行时常与-n连用,之前的例子有介绍;
- s:表示搜索替换(search);
- a:表示添加(add),后接字符串,添加到当前行的下一行;
- i:表示插入(insert),后接字符串,添加到当前行的上一行,与a的插入方式相反;
- c:表示替换(replace),后接字符串,用它替换n1到n2之间的行;
- d:表示删除(delete),其前常接n1,n2及匹配的表达式;
- q:表示退出(quit);
下面对各action进行举例说明,测试文件与上一篇文章相同,还是sed.txt:
1.打印(p):
下面的例子打印了文件的2-5行。
- $ cat sed.txt | sed -n '2,5p'
- 1034 7:27
- 1101 7:32
- 1006 7:45
- 1012 7:46
2.搜索替换(s):
下面的例子将所有以10打头的数字替换成11。
- $ cat sed.txt | sed 's/^10\(.*\)/11\1/'
- 1134 7:26
- 1134 7:27
- 1111 7:32
- 1106 7:45
- 1112 7:46
- 1128 7:49
- 1151 7:51
- 1129 7:57
- 1142 7:59
- 1108 8:01
- 1152 8:05
- 1105 8:12
- 1105 8:13
3.向后插入(a):
下面的例子将会在第二行后插入一串字符。
- $ cat sed.txt|sed '2a\
- $ wwwwww'
在第一行输入后回车,接着第二行输入要插入的字符,以单引号结束:
输出结果:
- 1034 7:26
- 1034 7:27
- wwwwww
- 1101 7:32
- 1006 7:45
- 1012 7:46
- 1028 7:49
- 1051 7:51
- 1029 7:57
- 1042 7:59
- 1008 8:01
- 1052 8:05
- 1005 8:12
- 1005 8:13
4.向前插入(i):
下面的例子向第二行之前插入字符串。
- $ cat sed.txt|sed '2i\
- $ wwwwww
- $ '
第一行输入后回车,在第二行输入要插入的字符串,第三行输入单引号结束。
输出结果:
- 1034 7:26
- wwwwww
- 1034 7:27
- 1101 7:32
- 1006 7:45
- 1012 7:46
- 1028 7:49
- 1051 7:51
- 1029 7:57
- 1042 7:59
- 1008 8:01
- 1052 8:05
- 1005 8:12
- 1005 8:13
5.替换(c):
下面的例子会替换第2-5行的内容。
- $ cat sed.txt|sed '2,5c\
- $ ddddddddddddddddd
- $ '
输出结果:
- 1034 7:26
- ddddddddddddddddd
- 1028 7:49
- 1051 7:51
- 1029 7:57
- 1042 7:59
- 1008 8:01
- 1052 8:05
- 1005 8:12
- 1005 8:13
6.删除(d):
下面的例子会删除第2-5行的内容。
- $ cat sed.txt|sed '2,5d'
- 1034 7:26
- 1028 7:49
- 1051 7:51
- 1029 7:57
- 1042 7:59
- 1008 8:01
- 1052 8:05
- 1005 8:12
- 1005 8:13
7.退出(q):
下面的例子会删除第2-5行,在第6行退出。
- $ cat sed.txt|sed '2,5d;6q'
- 1034 7:26
- 1028 7:49
本文转自 ustb80 51CTO博客,原文链接:http://blog.51cto.com/ustb80/1060835,如需转载请自行联系原作者