ぱっとやりたかったので調べたところ、予想以上に簡単でした。シェル芸便利です。
やりたかったこと
以下のようなCSVファイルがあり、各キー(a,b,c,d)の合計を計算したいです。(実際のファイルはもっと大容量です)
a,1 b,2 c,3 a,4 b,5 c,6 d,7
どうやったか
awkコマンドでは以下が可能でした。
- 連想配列
- 連想配列に入った値を
for( i in arr)
で簡単にループできる
$ cat hoge.csv | awk -F, '{arr[$1] = arr[$1] + $2}END{for(i in arr){print i , arr[i]} }'
こうなった
結果として以下のように集計ができました。便利ですね。
bash-3.2$ cat hoge.csv | awk -F, '{arr[$1] = arr[$1] + $2}END{for(i in arr){print i , arr[i]} }' a 5 b 7 c 9 d 7
参考になった
以下のサイトが参考になりました。ありがとうございます。