sed命令n,N,d,D,p,P,h,H,g,G,x解析

sed option ‘pattern{command1;command2…}’

$cat test.txt
This is 1
This is 2
This is 3
This is 4
This is 5
1.p和P
p打印当前模式空间内容,追加到默认输出之后

sed -n 'N;p' test.txt
结果
This is 1
This is 3

P打印从开始到第一个\n的内容,sed并不对每行末尾\n进行处理,但是对N命令追加的行间\n进行处理,因为此时sed将两行看做一行。

sed -n 'N;P' test.txt  #N前加$!表示末尾行不执行N,可以打印出This is 5在末尾
结果
This is 1
This is 2
This is 3
This is 4

2.n和N
n 提前读取下一行,覆盖模式空间前一行(并没有删除,因此依然打印至标准输出),如果命令未执行成功,则放弃后面的命令,读取下一行再执行sed
sed命令n,N,d,D,p,P,h,H,g,G,x解析
使用n命令后
sed命令n,N,d,D,p,P,h,H,g,G,x解析

sed -n 'n;p' test.txt 
结果
This is 2
This is 4
#读取This is 1 执行n命令,此时模式空间值为This is 2.之后读取This is 3 执行n命令后,模式空间值为This is 4.读取This is 5 执行n命令后面没有内容了,所以放弃后面的p命令而退出

N 追加下一行到当前行,把两行看作一行,但是\n换行符还在。如果命令未执行成功,则放弃后面的命令,读取下一行再执行sed
sed命令n,N,d,D,p,P,h,H,g,G,x解析

使用N命令后
sed命令n,N,d,D,p,P,h,H,g,G,x解析

3.d和D
d 删除当前模式空间内容(不在传到标准输出)并放弃之后的命令,读取新内容重新执行sed
D 删除当前模式空间开端至\n换行符内容(不在传到标准输出)并放弃之后的命令,但是剩余模式空间内容重新执行sed

4.y
y命令用于字符转换与s命令区别在于,y命令中只要查找条件字符中只要有一个字符符合条件便使用替换字符串中相应的字符进行替换

echo " This is a test" | sed 'y/his/HIS/' 而s命令将查找条件字符串作为一个整体
结果
THIS IS a teSt

echo "This is a test" | sed 's/his/HIS/'
结果
THIS is a test

5.h、H,g、G
h命令是将当前模式空间中内容覆盖至保持空间,H命令是将当前模式空间中的内容追加至保持空间
g命令是将当前保持空间中内容覆盖至模式空间,G命令是将当前保持空间中的内容追加至模式空间

参考:https://www.cnblogs.com/276815076/p/5237886.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值