当我在日志文件中找到错误字符串时,我需要知道是什么原因引起的 错误。但是失败的文件名是随机的行数 错误字符串之前。示例:
日志文件:
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 ”。
任何想法该怎么做?
答案 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