从文件中读取并添加数字

时间:2010-04-03 20:01:53

标签: bash add

我的文字文件包含条目 123 112 3333 44 2

如何添加这些数字并获得这些数字的总和。

4 个答案:

答案 0 :(得分:10)

示例:

$ cat numbers.txt
123 112 3333 44 2

$ SUM=0; for i in `cat numbers.txt`; do SUM=$(($SUM + $i)); done; echo $SUM
3614

另请参阅:Bash Programming Introduction, section on arithmetic evaluation

另一种方法是使用bc,一种任意精度计算器语言:

$ echo '123 112 3333 44 2' | tr ' ' '\n' | paste -sd+ | bc
3614

粘贴通常适用于行,因此我们需要tr

答案 1 :(得分:4)

MYYN 答案的仅限Bash(无cat)变体。

sum=0; for i in $(<number_file); do ((sum += i)); done; echo $sum

另外,请注意更简单的算术语句。

答案 2 :(得分:2)

只有一个awk命令就可以了。当你还要添加小数时,它不会中断。

awk '{for(i=1;i<=NF;i++)s+=$i}END{print s}' file

答案 3 :(得分:0)

或者在Awk中

echo "123 112 3333 44 2" | awk 'BEGIN {sum=0} {for(i=1; i<=NF; i++) sum+=$i } END {print sum}'

或者如果它在文件中

cat file.txt | awk 'BEGIN {sum=0} {for(i=1; i<=NF; i++) sum+=$i } END {print sum}'

我发现Awk更容易阅读/记忆。虽然“戴夫贾维斯”解决方案特别整洁!