当错误代码之前的行数不一致时,如何对出现在错误代码之前的字符串进行grep操作

时间:2019-09-30 15:14:40

标签: grep

当我在日志文件中找到错误字符串时,我需要知道是什么原因引起的 错误。但是失败的文件名是随机的行数 错误字符串之前。示例:

日志文件:

This **specific backup.tar** failed\n 
Because of this\n
Or because of this\n
Then some random lines of output\n  
Exiting -- searched-for string appears\n 

如果我使用“ grep Exiting --before-context = 4”,则会发现 backup.tar 失败。但是随机行的数量有所不同。

所以我想使用--before-context =“ string”,或者在这种情况下使用--before-context =“ .tar ”。

任何想法该怎么做?

1 个答案:

答案 0 :(得分:0)

不幸的是,grep不能胜任这项工作。在awk中尝试类似的事情:

$ cat foo.txt
This specific backup.tar failed
Because of this
Or because of this
Then some random lines of output
Exiting -- searched-for string appears
$ awk '/This specific .* failed/ { filename = $3 } /searched-for string/ { print filename }' foo.txt
backup.tar