我想統計文件中的所有數字。如何用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命令 –