我想统计文件中的所有数字。如何用awk统计文件中的所有数字?
实施例:
input -> Hi, this is 25 ...
input -> Lalala 21 or 29 what is ... 79?
输出应的所有数字的总和:154
(即,25 + 21 + 29 + 79)。
我想统计文件中的所有数字。如何用awk统计文件中的所有数字?
实施例:
input -> Hi, this is 25 ...
input -> Lalala 21 or 29 what is ... 79?
输出应的所有数字的总和:154
(即,25 + 21 + 29 + 79)。
$ cat data
Hi, this is 25 ...
Lalala 21 or 29 what is ... 79?
$ grep -oP '\b\d+\b' data | paste -s -d '+' | bc
154
从这个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#
的正则表达式(字符串),告诉呆子来创建基于 字段与正则表达式匹配的文本。为FPAT分配 值将覆盖使用FS和FIELDWIDTHS分割字段 。
这一工程它!非常感谢! –
我可以问你另一个关于awk的问题吗? (: –
@MikeJames是的,但它可能是值得[问另一个问题](http://stackoverflow.com/questions/ask)。 – fedorqui
随着grep
和awk
:
$ 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
不要这样做.' grep'不能做任何事'awk' can “T。 –
对不起,我必须要使用awk命令 –