スポンサーリンク
awkの列の総和と平均を求める
※awkの使い方をまとめて一覧にしました。
参考:awk入門-使い方まとめ一覧-
参考:awk入門-使い方まとめ一覧-
列を切り出して、順次インクリメントしていきます。
例えば、下記のin.txtがあったとします。
$ cat in.txt 2010,1 2009,2 2010,3 2008,4 2009,4
FS変数で、2列目を切り出して、2列目の$2を順次インクリメントします。
参考:awkのFS変数で区切り文字を設定
平均は総和を行数のNR変数で割れば良いですね。
参考:awkのNR変数で行数に応じた処理をする
$ cat sample.awk #!/bin/sh cat in.txt | awk ' BEGIN{ FS = "," } { sum += $2 } END{ print "sum = " sum print "ave = " sum / NR } '
下記が実行結果になります。
$ ./sample.awk sum = 14 ave = 2.8
スポンサーリンク
連想配列を使う
連想配列を使って、例えば、1列目の値をindexとして、各indexに対応する2列目の値の総和を求めます。
参考:awkの連想配列の使い方(サンプルコードあり)
下記がサンプルコードになります。
$ cat sample2.awk #!/bin/sh cat in.txt | awk ' BEGIN{ FS = "," } { arr[$1] += $2 } END{ for ( i in arr ) { print i "年の総和は" arr[i] } } '
下記が実行結果になります。
$ ./sample2.awk 2008年の総和は4 2009年の総和は6 2010年の総和は4
スポンサーリンク