9.4-sed命令(上)

其实 grep 工具的功能还不够强大,它实现的只是查找功能,而不能把查找的内容替换。以前用 vim 操作文档的时候,可以查找也可以替换,但是仅限于在文本内部操作,而不能输出到屏幕上。 sed 工具以及后面要介绍的 awk 工具就能把替换的文本输出到屏幕上,而且还有其他更丰富的功能。 sed 和 awk 都是流式编辑器,是针对文档的行来操作的。

操作前的准备

[root@evan-01 ~]# mkdir sed
[root@evan-01 ~]# cd sed
[root@evan-01 sed]# ls
[root@evan-01 sed]# cp ../grep/passwd test.txt
[root@evan-01 sed]# ls
test.txt
[root@evan-01 sed]#

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

加 -n ,仅显示处理后的结果

[root@evan-01 sed]# sed -n '2'p test.txt
bin:x:1:1:bin:/bin:/sbin/NOLogin
[root@evan-01 sed]#

不加 -n,会把处理后和处理器的内容一并展示出来
在这里插入图片描述指定区间打印

[root@evan-01 sed]# sed -n '1,3'p test.txt
rooooot:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/NOLogin
ascavsbkanv:asvka:992:ankanv:rao:jskk
[root@evan-01 sed]#
[root@evan-01 sed]# sed -n '25,$'p test.txt
user2:x:1004:1005::/home/user2:/bin/bash
user3:x:1006:1005::/home/user3:/sbin/nologin
user4:x:1007:1007::/home/user4:/bin/bash
rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin
rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin
nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
[root@evan-01 sed]#

打印包含某个字符串的行

[root@evan-01 sed]# sed -n '/root/'p test.txt
rooooot:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
[root@evan-01 sed]#

这类用法就类似于 grep 了,在 grep 中使用特殊符号(如:^、$、.、* 等)同样也能在 sed 中使用。

. 特殊符号,匹配一个非换行符的任意字符,如:/s.d/匹配s后接一个任意字符,最后是d

[root@evan-01 sed]# sed -n '/r.t/'p test.txt
operator:x:11:0:operator:/root:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
[root@evan-01 sed]#

* 特殊符号,匹配0个或多个字符,如:/sed/匹配所有模板是一个或多个空格后紧跟sed的行

[root@evan-01 sed]# sed -n '/r*t/'p test.txt
rooooot:x:0:0:root:/root:/bin/bash
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
operator:x:11:0:operator:/root:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:997:User for polkitd:/:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
[root@evan-01 sed]#

^ 特殊符号,匹配行开始,如:/^sed/匹配所有以sed开头的行

[root@evan-01 sed]# sed -n '/^a/'p test.txt
ascavsbkanv:asvka:992:ankanv:rao:jskk
adm:x:3:4:adm:/var/adm:/sbin/nologin
[root@evan-01 sed]#

$ 特殊符号,匹配行结束,如:/sed$/匹配所有以sed结尾的行

[root@evan-01 sed]# sed -n '/bash$/'p test.txt
rooooot:x:0:0:root:/root:/bin/bash
evan1:x:1000:1000::/home/evan1:/bin/bash
evan2:x:1001:1001::/home/evan2:/bin/bash
user1:x:1002:1002::/home/user1:/bin/bash
user2:x:1004:1005::/home/user2:/bin/bash
user4:x:1007:1007::/home/user4:/bin/bash
[root@evan-01 sed]#

-e 选项,可以实现多个行为,允许在同一行里执行多条命令

[root@evan-01 sed]# sed -e '1'p -e '/bus/'p -n test.txt
rooooot:x:0:0:root:/root:/bin/bash
dbus:x:81:81:System message bus:/:/sbin/nologin
[root@evan-01 sed]#
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值