我有这样的日志。其处理 .bill.file 格式文件的数量。如果处理过程中出现任何问题严重消息后跟信息将打印其中包含有关文件路径的详细信息
SEVERE 2016-02-09 00:45:18 [process number] rocessRunner.process Exception during process 123.bill.file
SEVERE 2016-02-09 00:45:18 [process number]
...
...
INFO 2016-02-09 00:45:18 [process number] Runner. Closing input /var/run/data/123.bill.file
我的要求是获取出现异常的文件路径。
答案1
grep
并不真正适合基于条件的匹配,例如您的要求,但更适合awk
可以在多行上处理多个模式匹配。根据您的输入,我们首先匹配以 开头的字符串SEVERE
,当下一个匹配INFO
出现时,我们打印最后一列可能包含您要查找的文件。
awk '/^SEVERE/{flag=1; next} flag && /^INFO/{print $NF; flag=0}' file