我想计算文件中的所有数字。
示例:
id
输出应为所有数字的总和:input -> Hi, this is 25 ...
input -> Lalala 21 or 29 what is ... 79?
(即25 + 21 + 29 + 79)。
答案 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)
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