カンマ区切りの数値をawkで処理して和を計算

796 ワード

ちょっとした作業の合間に和を計算したいと思ったが、わざわざ何かの言語を書く程ではない。という事で、シェル上で各行の和を計算しようと思ったのだが、うまく行かず試行錯誤に小1時間ほどかかってしまった。次回から同じ轍を踏まなないよう覚書を残しておく。

data.txt
21,569
598,012
1,278,360
...

このようなデータをawkで受け取ると各行を文字列で受け取るため、加減乗除を行うと型変換が行われ、カンマで区切られた最初の数値で計算をしてしまう。gsubでカンマを取り除いて計算をした。

cat data.txt | awk 'BEGIN{sum=0} {gsub(",","",$1)}{sum+=$1} END {print sum}'