2016-05-17 58 views

回答

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

对不起,我必须要使用awk命令 –

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#

的正则表达式(字符串),告诉呆子来创建基于 字段与正则表达式匹配的文本。为FPAT分配 值将覆盖使用FS和FIELDWIDTHS分割字段 。

+0

这一工程它!非常感谢! –

+0

我可以问你另一个关于awk的问题吗? (: –

+0

@MikeJames是的,但它可能是值得[问另一个问题](http://stackoverflow.com/questions/ask)。 – fedorqui

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 
+0

不要这样做.' grep'不能做任何事'awk' can “T。 –

相关问题