上接sed常用命令总结(一)

 5s:s/PATTERN/string/[g|i]   表示搜索符号PATTERN的内容,将其替换为string

       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.

6n:以覆盖的方式读去下一行。

         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:表示先搜索不已点号结尾的行,(2s@\n@ @g将搜索到的行去掉换行符 (3)将小写的bad animal 替换为BAD ANIMAL. 

7h将模式空间中的内容以覆盖的方式复制到保留空间。

           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

8b跳转,掠过符合条件的行。例如:

[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的一些常用命令和选项做介绍,其余命令可查看帮助手册。谢谢!