使用sed删除所有连续行,但不删除隔离行

时间:2017-03-16 15:45:20

标签: bash awk sed

我有一个日志文件,如下所示:

...
5 files analysed in 98 ms
7 files analysed in 654 ms
   error1: ....
   error2: ....
   error3: ....
21 files analysed in 345 ms
3 files analysed in 78 ms
6 files analysed in 55 ms
...

我期待使用“sed”或“awk”来删除包含“分析的文件”模式的所有连续行,而不是有用信息之上的那些。

7 files analysed in 654 ms
   error1: ....
   error2: ....
   error3: ....

我尝试了this post的一些技巧。但没有什么能像我想的那样工作。错误的数量并不总是相同的。

我该怎么办?

2 个答案:

答案 0 :(得分:1)

grep -v "files analysed in" -B 1

选择没有模式的所有内容,但在每次匹配前提供一行上下文

答案 1 :(得分:0)

awk

$ awk '/pattern/{p=$0} !/pattern/{print p; print}' file

foo3 pattern foo4
   some useful information

你也可以在第一场比赛后退出。