123 112 3333 44 2 のようなエントリを含むテキスト ファイルがあります。
これらの数値を加算して、これらの合計を取得する方法。
例:
$ cat numbers.txt
123 112 3333 44 2
$ SUM=0; for i in `cat numbers.txt`; do SUM=$(($SUM + $i)); done; echo $SUM
3614
もう 1 つの方法はbc
、任意精度の計算言語であるを使用することです。
$ echo '123 112 3333 44 2' | tr ' ' '\n' | paste -sd+ | bc
3614
通常、貼り付けは行で機能するため、必要tr
です。
MYYNの回答のBashのみ(なしcat
)のバリエーション。
sum=0; for i in $(<number_file); do ((sum += i)); done; echo $sum
また、より単純な算術ステートメントにも注意してください。
たった1つのawkコマンドがそれを行います。追加する小数がある場合も壊れません。
awk '{for(i=1;i<=NF;i++)s+=$i}END{print s}' file
あるいは 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」のソリューションは特にきちんとしていますが!