我运行以下命令:
grep -o "[0-9] errors" verification_report_3.txt | awk '{print $1}'
Run Code Online (Sandbox Code Playgroud)
我得到以下结果:
1
4
0
8
Run Code Online (Sandbox Code Playgroud)
我想将每个数字添加到一个运行计数变量中。有人可以帮我建造一个神奇的衬垫吗?
Sha*_*off 47
grep -o "[0-9] errors" verification_report_3.txt | awk '{ SUM += $1} END { print SUM }'
Run Code Online (Sandbox Code Playgroud)
这不会打印列表,但会打印总和。如果你想要列表和总和,你可以这样做:
grep -o "[0-9] errors" verification_report_3.txt | awk '{ SUM += $1; print $1} END { print SUM }'
Run Code Online (Sandbox Code Playgroud)
Tre*_*ner 12
这也可以在 awk 中完成:
awk '"[0-9]+ errors" {sum += $1}; END {print sum}' verification_report_3.txt
Run Code Online (Sandbox Code Playgroud)
小智 6
您似乎正在使用GNU系统,因此如果Perl正则表达式支持可用,您可以编写如下内容:
grep -Po '[0-9]+(?=\s+errors)' infile |
paste -sd+ |
bc
Run Code Online (Sandbox Code Playgroud)
PS我修改了正则表达式(添加了+量词)以允许数字> 9。
PS 或者, awk 就足够了(假设GNU awk):
awk 'END { print s }
/[0-9]+[[:space:]]+errors/ {
s += $1
}' infile
Run Code Online (Sandbox Code Playgroud)