上古神器sed命令(下)

上古神器sed命令(下)

测试文档:(people.txt)

Jack    is 18-year old, he comes from US.
Mike    is 16-year old, he comes from Canada.
Chen    is 21-year old, he comes from China.
Lau     is 18-year old, he comes from HongKong.
Michael is 20-year old, he comes from UK.
Phoebe  is 18-year old, she comes from Australie.
10,提前预读多一行缓冲来进行匹配:
sed 'N;s/is/IS/' people.txt
Jack    IS 18-year old, he comes from US.
Mike    is 16-year old, he comes from Canada.
Chen    IS 21-year old, he comes from China.
Lau     is 18-year old, he comes from HongKong.
Michael IS 20-year old, he comes from UK.
Phoebe  is 18-year old, she comes from Australie.

注意:由于替换只会针对第一个出现的单词is,而通过N又多读了一行,因此这个命令的结果是只会替换奇数行。

11,在指定行的前面插入(i)或者后面插入(a)一些信息:

sed '3i abcd' people.txt 意思是==>在第3行的前面插入abcd
sed '2a abcd' people.txt 意思是==>在第2行的后面插入abcd
sed '1,4a abcd' people.txt 意思是==>在第1至4行的后面分别插入abcd
sed '/US/a abcd' people.txt 意思是==>在匹配US的行的后面插入abcd

12,将指定的行替换成其他信息:

sed "2c ok" people.txt 意思是==>将第2行替换成ok

13,将指定的行删除掉:

sed ‘2d’ people.txt 意思是==>将第2行给删掉
sed ‘/US/d’ people.txt 意思是==>将匹配/US/的所有行给删掉
sed '/\<he\>/d' people.txt 意思是==>将匹配he的所有行给删掉,

注意:之所以要用<>将he给括起来,是因为不想匹配she,当然,<>需要转义,写成\<>

14,打印指定匹配的行,用命令p:

sed '/Chen/p' people.txt -n 意思是==>打印匹配Chen的行
sed '/Chen/, /Lau/p' people.txt -n 意思是==>打印匹配Chen或者Lau的行
sed '3,/UK/p' people.txt -n 意思是==>从第3行开始打印,直到匹配UK为止
sed '/UK/,6p' people.txt -n 意思是==>从匹配UK的行开始打印,直到第6行为止

15,使用相对位置:

sed '/US/, +2p' people.txt -n 意思是==>打印匹配US的行,并打印其后的2行。

16,执行多个命令:

sed '{/he/{/18/p}}' people.txt -n 意思是==>匹配所有/he/的行之后,再匹配/18/的行,然后打印出来。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值