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的主要内容,如果未能解决你的问题,请参考以下文章