9.4/9.5 sed

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了9.4/9.5 sed相关的知识,希望对你有一定的参考价值。

9.4/9.5 sed

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

打印某行

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

test11:x:1001:1002::/home/test11:/bin/bash
[[email protected] ~]# sed -n '2'p /etc/passwd
bin:x:1:1:bin:/bin:/sbin/nologin
[[email protected] ~]# 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。

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

[[email protected] ~]# 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

打印包含某个字符串的行

示例命令如下:

[[email protected] ~]# sed -n '/root/'p test.txt

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

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

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

[[email protected] ~]# sed -e '1'p -e '/111/'p -n test.txt

111111111111111111111111111111

删除某些行

示例命令如下:

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

111111111111111111111111111111
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
[[email protected] ~]#

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

替换字符或者字符串

示例命令如下:

[[email protected] ~]# sed 's#ot#to#g' test.txt

roooto:x0:0:/rooooto:/bin/bash
111111111111111111111111111111
[[email protected] ~]# sed '[email protected]@[email protected]' test.txt

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

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

[[email protected] ~]# sed 's/[0-9]//g' test.txt

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

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

以上是关于9.4/9.5 sed的主要内容,如果未能解决你的问题,请参考以下文章

9.4/9.5 sed

9.4/9.5 sed

?9.4 9.5 sed

9.4/9.5 sed

9.4-9.5 sed工具

7.4 9.4-9.5