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

时间:2016-05-17 11:40:57

标签: linux bash awk

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

示例:

id

输出应为所有数字的总和:input -> Hi, this is 25 ... input -> Lalala 21 or 29 what is ... 79? (即25 + 21 + 29 + 79)。

3 个答案:

答案 0 :(得分:3)

beautiful answer by 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的使用   分裂。

答案 1 :(得分:1)

ModelViewSet

答案 2 :(得分:0)

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