
アイテムとその価格を含むコストレポートである次のコンテンツを含むサンプルファイルを見てみましょう。
$ cat file
Item1,200
Item2,500
Item345,900
Item20896,800
Item111,600
今友達が私に挑戦してきました。総価格すべてのプロジェクトで - しかしいいえ使用awk
。それは可能ですか?
答え1
GNUバッシュの使用:
while IFS="," read -r item number; do ((sum=$sum+$number)); done < file; echo $sum
出力:
3000
答え2
なぜ使用したくないのかわかりませんが、awk
もちろん次のようないくつかの選択肢があります。
パール(チームトーディ)
$ perl -F, -lane '$k+=$F[1];}{print $k' file 3000 $ perl -lne '/,(\d+)/;$k+=$1;}{print $k' file 3000 $ perl -F, -lane '$k+=$F[1];END{print $k}' file 3000
クラシック*nixツール
$ cut -d, -f2 file | tr '\n' '+' | sed 's/+$/\n/' | bc 3000 $ cut -d, -f2 file | paste -d'+' - - - - - | bc 3000
最新のBourneシリーズシェル(例:bash、ksh、zsh)
$ k=0; while IFS=, read a num; do ((k+=num)); done < file ; echo "$k"; 3000
POSIXシェル
k=0; while IFS=, read a num; do k=$((k+num)); done < file ; echo "$k";
答え3
使用デジタルユーティリティ:
numsum -s, -2 file
使用データ混合:
datamash -t, sum 2 < file
使用ジャック:
cut -d, -f2 file | jq -s add