如何用Bash单命令汇总Jenkins生成的多文本文件数值?
可行,单条Bash命令就能实现
直接用awk一次性完成提取和求和,不需要额外管道,命令如下:
awk -F '[=" ]+' '/testsuite name=/{cars+=$4; users+=$6; bus+=$8; bike+=$10} END{printf "cars=%d users=%d bus=%d bike=%d\n", cars, users, bus, bike}' my-output*.txt
命令解释:
-F '[=" ]+':把等号、双引号、空格的任意组合设为字段分隔符,精准拆分出每个指标的数值。/testsuite name=/:匹配目标行(每个文件只有一行符合格式,也可以省略这个匹配直接处理所有行)。cars+=$4; users+=$6; bus+=$8; bike+=$10:对每个文件里的对应数值累加,$4对应cars的数值,$6对应users,以此类推。END代码块:所有文件处理完成后,按要求格式输出累加结果。
如果要基于你已有的提取命令做扩展,也可以用管道实现:
awk '/testsuite name=/{print $3, $4, $5, $6}' my-output*.txt | awk -F '[="]+' '{cars+=$2; users+=$4; bus+=$6; bike+=$8} END{printf "cars=%d users=%d bus=%d bike=%d\n", cars, users, bus, bike}'
内容的提问来源于stack exchange,提问作者DevFromI
相关产品推荐
相关产品推荐

