2012-05-18 51 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高兴。单独运行命令的不同部分要弄清楚这是怎么回事)