您的位置:首页 > 其它

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

2012-02-06 11:58 225 查看
为了验证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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  delete