2016-05-17 59 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。 –

相關問題