【发布时间】:2014-10-03 04:50:56
【问题描述】:
我有一个类似这样的日志文件:
blah blah
blah
blah mypattern blah
blah mypattern blah
blah
blah mypattern blah
blah mypattern blah
blah
我想要一个单行从标准输入读取上述内容(即单次通过),使用 mypattern 打印 2 组行,然后在打印第二组行后直接退出。
在我只想要一组线的情况下,我使用以下单线:
sed '1,/mypattern/d' |sed '/mypattern/!q'
如您所见,这里有一条线,否则没什么大不了的。
编辑:这大致是我的预期输出
blah mypattern blah
blah mypattern blah
blah mypattern blah
blah mypattern blah
如果它在边界的任一侧在这里或那里添加或遗漏一条线,这没什么大不了的。重要的是,对于无限输入,如果模式有 2 个有限部分,其间有有限间隙,它将终止。
【问题讨论】:
-
你的预期输出是什么?
-
您的一个集合案例的代码不会打印集合的第一行。
-
@Barmar 正确。我可以接受,只要它打印出每组的大部分内容 - 实际上比赛的开始和结束线并不重要。
-
这个
sed -n '/mypattern/p' file -
您不希望打印第三组(如果有的话)?或者没有发生这种情况,所以 Avinash Raj 套件的行很好地满足了要求