我有一个包含数千个数字的文件,每个数字都在自己的行上:
34
42
11
6
2
99
...
我想写一个脚本,它将打印文件中所有数字的总和。我有一个解决办法,但不是很有效。(运行需要几分钟。)我在寻找一个更有效的解决方案。有什么建议吗?
我有一个包含数千个数字的文件,每个数字都在自己的行上:
34
42
11
6
2
99
...
我想写一个脚本,它将打印文件中所有数字的总和。我有一个解决办法,但不是很有效。(运行需要几分钟。)我在寻找一个更有效的解决方案。有什么建议吗?
当前回答
你可以使用awk:
awk '{ sum += $1 } END { print sum }' file
其他回答
你可以使用awk:
awk '{ sum += $1 } END { print sum }' file
这是直接的Bash:
sum=0
while read -r line
do
(( sum += line ))
done < file
echo $sum
我更喜欢用R来表示:
$ R -e 'sum(scan("filename"))'
另一个选择是使用jq:
$ seq 10|jq -s add
55
-s(——slurp)将输入行读入数组。
另一个是为了好玩
sum=0;for i in $(cat file);do sum=$((sum+$i));done;echo $sum
或者再来一次
s=0;while read l; do s=$((s+$l));done<file;echo $s
但awk解决方案可能是最好的,因为它最紧凑。