awkでファイル内の値を集計

awk コマンドでファイルの内の合計を求める

awkコマンドを利用すると簡単にファイル内のある数値を集計できます。
下記のような数字が入っているファイルがあります

$ cat test1.txt
10
20
30
40
50
60
70

上記のファイルを1列目の数値を合計するには、下記のような書式になります

awk '{sum += $1} END {print sum}' ファイル名
  • {sum += $1}  で変数名[sum]に、1番目のフィールドの値を加算してきます
  •  {print sum} で、集計した値を出力しています
  • ファイル名 が集計するファイル名となります
  • 区切り文字を指定しない場合は、空白、タブが区切り文字となります
$ awk '{sum += $1} END {print sum}' test1.txt
280

区切り文字を指定して集計する場合

区切り文字が空白、タブの場合は指定しなくても大丈夫ですが、csvファイルのように「,」区切りの場合は「-F “,"」のように区切り文字を指定します。

下記では、「,」区切りの1つ目のカラムの値を集計しています

$ cat test.txt 
31,10
32,20
33,30
34,40
35,50
36,60

$ awk -F , '{sum += $1} END {print sum}' test.txt
201

複数のカラムを集計したい場合

複数のカラムを集計したい場合は、a += $1のように1つ目のカラムを集計指定してから「;」の後に、b += $2の2つ目のカラムを指定します。出力には{print a,b}のように、2つの変数を指定します

$ cat test2.txt 
31,10
32,20
33,30
34,40
35,50
36,60

$ awk '{a += $1; b += $2} END {print a,b}' test2.txt
201 210

 

 

スポンサーリンク

0
0