如何grep特定模式并打印该模式上下的所有内容,直到达到指示符(LINUX)?

时间:2015-07-07 12:23:44

标签: linux awk sed grep

因此,我尝试grep一个特定的模式,然后将该模式上下的所有内容打印到特定的指示器。我不知道grep是否可行,或者我是否应该使用其他工具,如awk,sed或生成一些shell脚本。如果我有以下内容:

---------------
     .....
process: failed
     ......
----------------

----------------
     .....
process: frozen
     .....
----------------

我想要'进程:冻结'并且在找到'process:frozen'时想要虚线之间的所有内容。但是,虚线之间的行数可能因不同的“进程:冻结”消息而有所不同,因此我无法计算上方或下方的行数,并使用grep的-A和-B选项。先感谢您。

2 个答案:

答案 0 :(得分:6)

我会使用GNU awk并将记录分隔符设置为包含16个超标的字符串:

awk '/process: (failed|frozen)/' RS='-{16}' input.file

答案 1 :(得分:0)

您只需删除process: frozen中包含process: failedsed消息的行。

sed "/process: frozen/d"