因此,我尝试grep一个特定的模式,然后将该模式上下的所有内容打印到特定的指示器。我不知道grep是否可行,或者我是否应该使用其他工具,如awk,sed或生成一些shell脚本。如果我有以下内容:
---------------
.....
process: failed
......
----------------
和
----------------
.....
process: frozen
.....
----------------
我想要'进程:冻结'并且在找到'process:frozen'时想要虚线之间的所有内容。但是,虚线之间的行数可能因不同的“进程:冻结”消息而有所不同,因此我无法计算上方或下方的行数,并使用grep的-A和-B选项。先感谢您。
答案 0 :(得分:6)
我会使用GNU awk
并将记录分隔符设置为包含16个超标的字符串:
awk '/process: (failed|frozen)/' RS='-{16}' input.file
答案 1 :(得分:0)
您只需删除process: frozen
中包含process: failed
或sed
消息的行。
sed "/process: frozen/d"