2013-04-25 68 views

回答

1
awk '{s+=$0}END{print s}' tmp.txt 

kent$ echo "43.51 
26.52 
63.31 
21.36 
1.01 
13.91 
19.64 
30.98"|awk '{s+=$0}END{print s}' 
220.24 
+0

發現在廣義含方式:) #/斌/慶典 文件答案=」 /basepath/temp.txt「 sum ='awk'{for(i = 1; i <= NF; i ++)s + = $ i} END {print s}'$ file' echo $ sum – sasuke 2013-04-25 17:43:23

+0

@sasuke你評論中的awk行不適用於你的temp.txt。每行有一個數字。您找到的awk行將所有數字都在一行中,並以空格分隔 – Kent 2013-04-25 17:47:40

0

這裏有一個基於 'BC' 版本:

#!/usr/bin/env bash 
tally=0 
while read value 
do 
    tally=`echo "scale=3;${value} + ${tally}" | bc`   
done < tmp.txt 

其中tmp.txt包含:

43.51 
26.52 
63.31 
21.36 
1.01 
13.91 
19.64 
30.98 

運行輸出是:

./script-math 
220.24 

可以修改成爲:

#!/usr/bin/env bash 
tally=0 
while read value 
do 
    tally=`echo "scale=3;${value} + ${tally}" | bc`   
done 

所以,你可以:

cat tmp.txt | ./script-math 
1

嘗試這種短變體

paste -sd+ temp.txt|bc 
相關問題