我有一个文本日志文件,其中包含多个条目,如下所示:
Processing input.jpg (323 of 500)...
Detecting matches in region 1...
Detecting matches in region 2...
Detecting matches in region 3...
Detecting matches in region 4...
Detecting matches in region (n)...
...
NOT ENOUGH MATCHES - FULL FILE OUTPUT
Processing input1.jpg (324 of 500)...
我想对文件进行 grep 以匹配出现 FULL FILE 序列的每个实例,然后获取生成该结果的文件的名称 - 即在每个 FULL FILE 匹配之前找到开始处理的行。
如何使用 grep 或其他工具(如 sed 或 awk)执行此操作?
到目前为止,我能够匹配在日志中找到 FULL FILE 的每个实例并对其进行计数:
cat output.txt | grep "FULL FILE" | wc -l
但我现在需要从日志文件中为每个匹配项获取前面的文件名。
非常感谢任何帮助。
最佳答案
假设文件名中没有空格,awk
就可以了
awk '/^Processing/{file=$2};/FULL FILE OUTPUT$/{print file}' output.txt
关于regex - Grep for word and line before match,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27659360/