如何用awk提取测试结果文件中含迭代标识的错误记录?
解决方案
核心逻辑
用awk跟踪当前迭代号:匹配到迭代块的起始行时,把迭代号存为变量;之后遇到ERROR行,就把迭代号和错误内容一起输出。
单个文件处理命令
直接执行这条命令即可提取带迭代标识的错误行:
awk '/^# ----------------- Iteration / {iter=$4} $4 ~/ERROR/ {print iter ": " $0}' File1_loc/result.txt
批量处理30个文件
如果要一次性处理所有测试文件(假设文件路径符合*/result.txt的规律),可以加上FILENAME变量区分不同文件的错误:
awk '/^# ----------------- Iteration / {iter=$4} $4 ~/ERROR/ {print FILENAME, iter ": " $0}' */result.txt
命令细节说明
/^# ----------------- Iteration / {iter=$4}:识别迭代块的起始行,将该行第4个字段(即迭代号N)存入iter变量,后续所有行都会沿用这个值,直到遇到下一个迭代起始行更新变量$4 ~/ERROR/ {print iter ": " $0}:当行的第4个字段包含ERROR时,输出当前迭代号+冒号+完整错误行内容- 批量处理时的
FILENAME是awk内置变量,会显示当前处理的文件名,方便快速定位错误所属的测试文件
内容的提问来源于stack exchange,提问作者user3285014
相关产品推荐
相关产品推荐

