我有一个命令,我从bash shell启动,输出一大堆行。
我希望看到除了“寻找更改”和“等待服务器更改”行之间的行之外的所有输出
所以让我们说实际输出是 -
Line 1 Line 2 Looking for changes Line 3 Line 4 Waiting for changes from server Line 5 Line 6
我只想看 -
Line 1 Line 2 Looking for changes Waiting for changes from server Line 5 Line 6
我可以编写一个快速的python脚本,我可以通过它管道,但想知道是否可以使用开箱即用的东西,如grep或awk。
答案 0 :(得分:2)
我出来了这个解决方案:
$ sed -n -e '1,/Looking/p' -e '/Waiting/,$p' file
Line 1
Line 2
Looking for changes
Waiting for changes from server
Line 5
Line 6
'1,/Looking/p'
从文件开头打印到包含Looking
的行。'/Waiting/,$p'
从包含Waiting
的行打印到文件末尾。sed -e
是让sed执行不同块的方法:sed -e 'something' -e 'other thing'
。答案 1 :(得分:1)
这是一个awk one liner:
... | awk '/^Waiting for changes from server$/{p=0}p==0{print}/^Looking for changes$/{p=1}'
我们使用变量p作为标志。如果它为零,我们打印该行,否则我们不打印。当我们匹配指定的行时,该标志会更改值。