如何用grep从Bitbucket Pipeline输出文件提取结果表格?
可行,具体操作方法如下
完全可以通过正则表达式结合grep工具提取文件底部的测试结果表格,以下是几种实用的操作方法:
方法1:定位表格表头并捕获后续所有行
如果你知道测试表格的表头内容(比如| 测试名称 | 状态 | 耗时 |),可以用grep的-A参数抓取表头及之后的所有行:
grep -A 9999 "| 测试名称 | 状态 | 耗时 |" pipeline_output.txt
-A 9999表示匹配到目标行后,再显示后续9999行(数值可根据表格长度调整),由于表格在文件底部,这会完整捕获整个表格。
方法2:提取底部所有符合表格格式的行
如果你的测试表格是标准的竖线分隔格式(每行以|开头和结尾),可以结合tac(反转文件)和grep筛选出底部的表格行:
tac pipeline_output.txt | grep -B 9999 -v "^[^|].*[^|]$" | tac
tac将文件内容反转,从最后一行开始处理grep -B 9999 -v "^[^|].*[^|]$"排除所有不以|开头或结尾的行,并保留这些行之前的9999行(即所有连续的表格行)- 最后用
tac反转回原顺序,得到完整的测试表格
方法3:通过行号定位表格起始位置
先找到表格分隔线(比如|---|---|---|)的行号,再用tail提取该行到文件末尾的内容:
# 获取表格分隔线的行号(取最后出现的分隔线,对应底部的表格) table_start=$(grep -n "^|---.*---|$" pipeline_output.txt | tail -n1 | cut -d: -f1) # 从该行开始提取到文件末尾 tail -n +$table_start pipeline_output.txt
注意:请根据你实际的Bitbucket Pipeline输出表格结构,调整上述命令中的正则匹配内容(比如表头文本、分隔线格式)。
内容的提问来源于stack exchange,提问作者Smh
相关产品推荐
相关产品推荐

