2012-05-18 49 views
4
 

Jack 10 
J  10 
A  20 
Lu cal 20 
A bc U 20 

我想這些NUMS的總和:10 + 10 + 20 + 20 + 20 = 80BC:獲得NUM列表的總和

,但我不能使用cat input|cut -d " " -f 3得到數字,我該怎麼辦?

+0

的數字似乎在列8開始,如果你應該使用'cut';這應該是一個讓你走的暗示。你也不需要'貓'。您可能需要使用'awk'來進行求和,或者'sed'來插入必要的額外字符。 –

回答

7

您可以用grep +粘貼+ BC

$ grep -oE '[0-9]+' file 
10 
10 
20 
20 
20 

$ grep -oE '[0-9]+' file | paste -s -d + - 
10+10+20+20+20 

$ grep -oE '[0-9]+' file | paste -s -d + - | bc 
80 

,而不是grep的,你可以使用切

$ cut -c 8- file 

或只是在awk

$ awk '{print $NF}' file 

,但如果你可以用awk,您可以用awk總結

$ awk '{total += $NF} END { print total }' file 
0

假設你的文件名爲input.txt:

echo `sed 's/[^0-9]*\([0-9]*\).*/\1+/' input.txt` '0' | bc 

(我敢肯定有一個更優雅的方式與SED或AWK可能做到這一點,這僅僅是一個快速的黑客添加終結「0」,使BC高興。單獨運行命令的不同部分要弄清楚這是怎麼回事)