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
ディスカッション
コメント一覧
まだ、コメントがありません