sed命令简单使用-D命令-结束本轮循环

为了验证D命令后的语句是否会执行,写了如下实例,(其中=表示输出当前行号,=;=表示输出当前行号两次):

[work@ test_sed]$  seq -f"%05g" 1 6 | sed -n ':a;N;p;=;D;N;p;=;=;ba'
00001
00002
2
00002
00003
3
00003
00004
4
00004
00005
5
00005
00006
6

可以发现行号并没有连续输出两次,所以语句执行到D后,后面的“N;p;=;=;ba”并没有执行,去掉上面命令中第一个N,执行如下:

  [work@ test_sed]$  seq -f"%05g" 1 6 | sed -n ':a;p;=;D;N;p;=;=;ba'
00001
1
00002
2
00003
3
00004
4
00005
5
00006
6
可以发现,语句执行到D后,后面的“N;p;=;=;ba”并没有执行,去掉前面命令中的D,执行如下:
[work@ test_sed]$  seq -f"%05g" 1 6 | sed -n ':a;N;p;=;N;p;=;=;ba' 
00001
00002
2
00001
00002
00003
3
3
00001
00002
00003
00004
4
00001
00002
00003
00004
00005
5
5
00001
00002
00003
00004
00005
00006
6

去掉D命令后,可以发现后面的“N;p;=;=;ba”执行了。所以,D命令将结束本轮sed语句,开始下一个循环。D命令后的语句将不再执行。另,d(Delete pattern space.  Start next cycle.)命令也是一样:

[work@ test_sed]$ seq -f"%05g" 1 6 | sed -n ':a;N;p;=;d;N;p;=;=;ba'
00001
00002
2
00003
00004
4
00005
00006
6

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值