11

我有带有条目的文本文件,例如 123 112 3333 44 2

如何将这些数字相加并得到它们的总和。

4

4 回答 4

14

例子:

$ 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 编程介绍,算术评估部分

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

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

粘贴通常在行上工作,所以我们需要tr.

于 2010-04-03T20:07:50.757 回答
5

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

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

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

于 2010-04-03T22:15:40.373 回答
2

只需一个 awk 命令即可。当您还要添加小数时,它也不会中断。

awk '{for(i=1;i<=NF;i++)s+=$i}END{print s}' file
于 2010-04-04T00:21:43.080 回答
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 更容易阅读/记住。虽然“Dave Jarvis”解决方案特别整洁!

于 2010-04-03T23:18:35.900 回答