我运行以下命令:
grep -o "[0-9] errors" verification_report_3.txt | awk '{print $1}'
我得到以下结果:
1
4
0
8
我想将每个数字添加到一个运行计数变量中。有人可以帮我制作一种神奇的衬垫吗?
答案1
grep -o "[0-9] errors" verification_report_3.txt | awk '{ SUM += $1} END { print SUM }'
这不会打印列表,但会打印总和。如果您想要列表和总和,您可以这样做:
grep -o "[0-9] errors" verification_report_3.txt | awk '{ SUM += $1; print $1} END { print SUM }'
答案2
这也可以在 awk 中完成:
awk '"[0-9]+ errors" {sum += $1}; END {print sum}' verification_report_3.txt
答案3
您似乎正在使用GNU系统,所以如果珀尔正则表达式支持可用,您可以编写如下内容:
grep -Po '[0-9]+(?=\s+errors)' infile |
paste -sd+ |
bc
PS 我修改了正则表达式(添加了+量词)以允许数字> 9。
PS 或者,awk 就足够了(假设GNU awk):
awk 'END { print s }
/[0-9]+[[:space:]]+errors/ {
s += $1
}' infile
答案4
尝试将 grep 的输出通过管道传输到
awk 'BEGIN {total=0;}{total+=$1;}END {print "Total: ",total}'