码迷,mamicode.com
首页 > 其他好文 > 详细

9.4/9.5 sed

时间:2018-07-04 11:36:13      阅读:177      评论:0      收藏:0      [点我收藏+]

标签:编辑   mes   use   file   usr   game   单引号   一个   字母   

9.4/9.5 sed

sed工具和awk工具就能把替换的文本输出到屏幕上,功能丰富。都是流式编辑器,是针对文档的行来操作的。

打印某行

sed命令格式为:sed -n 'n'p filename,单引号内的n是一个数字,表示第几行。-n选项的作用是只显示我们要打印的行。示例命令如下:

test11:x:1001:1002::/home/test11:/bin/bash
[root@bogon ~]# sed -n '2'p /etc/passwd
bin:x:1:1:bin:/bin:/sbin/nologin
[root@bogon ~]# sed -n '1,$'p /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin

上例中为把所有行都打印出来,命令sed -n '1,$'p filename。

指定一个区域打印,如下所示:

[root@bogon ~]# sed -n '1,3'p /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin

打印包含某个字符串的行

示例命令如下:

[root@bogon ~]# sed -n '/root/'p test.txt

sed使用特殊字符(如^、$,.*d等)

[root@bogon ~]# sed -n '/^1/'p test.txt
111111111111111111111111111111
[root@bogon ~]# sed -n '/in$/'p test.txt
[root@bogon ~]# sed -n '/r..o/'p test.txt
roooot:x0:0:/rooooot:/bin/bash
[root@bogon ~]# sed -n '/ooo*/'p test.txt
roooot:x0:0:/rooooot:/bin/bash

sed命令加上-e选项可以实现多个行为,如下所示:

[root@bogon ~]# sed -e '1'p -e '/111/'p -n test.txt

111111111111111111111111111111

删除某些行

示例命令如下:

[root@bogon ~]# sed -e '1'd test.txt
roooot:x0:0:/rooooot:/bin/bash
111111111111111111111111111111
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
[root@bogon ~]# sed -e '1,3'd test.txt
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
[root@bogon ~]# sed -e '/oot/'d test.txt

111111111111111111111111111111
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
[root@bogon ~]#

这里参数d表示删除的动作,它不仅可以删除指定的单行以及多行,而且可以删除匹配某个字符的行,还可以删除从某一行开始到文档最后的一行的所有行。

替换字符或者字符串

示例命令如下:

[root@bogon ~]# sed 's#ot#to#g' test.txt

roooto:x0:0:/rooooto:/bin/bash
111111111111111111111111111111
[root@bogon ~]# sed 's@ot@to@g' test.txt

roooto:x0:0:/rooooto:/bin/bash
111111111111111111111111111111
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

删除文档中所有的数字或者字母?示例命令如下:

[root@bogon ~]# sed 's/[0-9]//g' test.txt

roooot:x::/rooooot:/bin/bash

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

9.4/9.5 sed

标签:编辑   mes   use   file   usr   game   单引号   一个   字母   

原文地址:http://blog.51cto.com/13107353/2135964

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!