g:表示将搜索到的内容全部替换。
i:表示将搜索到的内容忽略大小写。
如果PATTERN中含有与分隔符相同的字符时,可以将分隔符替换为其他符号。例如:s@PATTERN@string@[g|i]
范例如下:
[root@localhost ~]# cat test #显示test的内容
He love his love.
She like her like.
Dove love her like.
[root@localhost ~]# sed 's@\(l..e\)\.@\1r.@' test #在最后一个单词后面加r,注意第.
He love his lover. #前面要加转义字符\
She like her liker.
Dove love her liker.
[root@localhost ~]# sed 's@\<h\([[:alpha:]]*\)\>@H\1@g' test #将以h开头的单词替换
He love His love. #为以H开头
She like Her like.
Dove love Her like.
(6)n:以覆盖的方式读去下一行。
N:以追加的方式读取下一行。例如:
[root@localhost ~]# cat test #test中的内容
He love his love.
She like her like.
Dove love her like.
four line
[root@localhost ~]# sed -n 'n;p' test #使用n时的效果
She like her like.
four line
[root@localhost ~]# sed 'n;d' test #只显示偶数行。
He love his love.
Dove love her like.
[root@localhost ~]# sed -n 'N;p' test #使用N时的效果
He love his love.
She like her like.
Dove love her like.
four line
[root@localhost ~]# sed 'N;N;s@\n@ @g' test #表示将前三行合并为一行
He love his love. She like her like. Dove love her like.
four line
[root@localhost ~]# sed '/\.$/!N;s@\n@ @g;s/bad animal/BAD ANIMAL/g' test
He love his love.
She like her like.
Dove love her like.
four line Wendy is BAD ANIMAL.
Blair is a BAD ANIMAL.
这题目较复杂:(1)/\.s/!N:表示先搜索不已点号结尾的行,(2)s@\n@ @g:将搜索到的行去掉换行符 (3)将小写的bad animal 替换为BAD ANIMAL.
(7) h:将模式空间中的内容以覆盖的方式复制到保留空间。
H:将模式空间中的内容以追加的方式复制到保留空间。
g:将保留空间的内容以覆盖的方式复制到模式空间。
G:将保留空间的内容以追加的方式复制到模式空间。例如:
[root@localhost ~]# cat newfile #显示文件中的内容
line 1
line 2
line 3
[root@localhost ~]# sed -n 'h;n;G;h;n;G;p' newfile #将文件中的行倒序排列
line 3
line 2
line 1
(8)b:跳转,掠过符合条件的行。例如:
[root@localhost ~]# sed '1b;y/123/456/' newfile
line 1
line 5
line 6
此例表示:跳过第一行,将其他各行的123替换为456;其中y表示替换的意思。
b lable:表示跳转到某个位置。例如
[root@localhost ~]# cat newfile
line 1
line
line 3
line
[root@localhost ~]# sed '/.*[[:digit:]].*/b para;s/.*/% &/;:para;s/.*[0-9].*/# &/g' newfile
# line 1
% line
# line 3
% line
此例表示,将带数字的行前添加#,不带数字前添加%;定义para为跳转符。这个参数可以随意指定。
本文只是对sed的一些常用命令和选项做介绍,其余命令可查看帮助手册。谢谢!