Chinaunix
标题:
sed 的问题,为什么会输出两个空行?
[打印本页]
作者:
borefo
时间:
2010-07-26 10:08
标题:
sed 的问题,为什么会输出两个空行?
11111111111111
22222222222222
test33333333333333
44444444444444
5555555555555
复制代码
执行下面命令后为什么会输出两行空行?
linux-svy2:# sed '/test/{x;p;}' foo
11111111111111
22222222222222
44444444444444
5555555555555
复制代码
作者:
waker
时间:
2010-07-26 10:20
你x进来一个空行,显示打印一次,缺省打印一次 1+1=2
作者:
bbgg1983
时间:
2010-07-26 10:30
他说的对,sed默认会把文本里面的行挨个打一遍,然后你又p了一次,所以空格的那行就打了两次
作者:
wild_li
时间:
2010-07-26 10:33
路过,,不想要两行的话直接把后面p拿掉就行了
作者:
expert1
时间:
2010-07-26 10:55
作者:
borefo
时间:
2010-07-26 16:09
回复
2#
waker
照这样说,sed '/test/{x;p;x;}' foo 也应该打印两个空行,为什么这个只打印了一个空行呢?
作者:
Shell_HAT
时间:
2010-07-26 16:14
回复
6#
borefo
第二次x的时候,test33333333333333被从holding buffer复制回pattern space,所以不会有两个空行。
作者:
borefo
时间:
2010-07-26 16:19
回复
7#
Shell_HAT
哦,明白了
再请教一个问题:test33333333333333是在交换后立即打印,还是重新执行sed时才打印的呢?
作者:
Shell_HAT
时间:
2010-07-26 16:21
回复
8#
borefo
第二次x交换回来之后,sed命令走到了结尾的},打印模式空间的内容。然后sed再读下一行......
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2