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 プログラミング入門、算術評価のセクション

もう 1 つの方法は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

たった1つの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 に答える