如何用awk统计文件中的所有数字?

我想统计文件中的所有数字。

例:

input -> Hi, this is 25 ... input -> Lalala 21 or 29 what is ... 79? 

输出应该是所有数字的总和: 154 (即25 + 21 + 29 + 79)。

从hek2mgl的这个美丽的答案,如何提取文件中最大的数字,让我们赶上文件中的所有数字,并将它们相加:

 $ awk '{for(i=1;i<=NF;i++){sum+=$i}}END{print sum}' RS='$' FPAT='-{0,1}[0-9]+' file 154 

这设置记录分隔符的方式,整个文本块是一个独特的记录。 然后,它设置FPAT使每一个数字(正数或负数)是不同的字段:

FPAT#

正则表达式(作为字符串)告诉gawk基于与正则表达式匹配的文本创建字段。 为FPAT分配值将覆盖使用FS和FIELDWIDTHS进行字段拆分。

 $ cat data Hi, this is 25 ... Lalala 21 or 29 what is ... 79? $ grep -oP '\b\d+\b' data | paste -s -d '+' | bc 154 

grepawk

 $ cat test.txt Hi, this is 25 ... Lalala 21 or 29 what is ... 79? $ grep '[0-9]\+' -o test.txt | awk '{ sum+=$1} END {print sum}' 154