LoginSignup
83
63

More than 5 years have passed since last update.

awk で気軽に集計

Posted at

とある集計用のスクリプトで複雑なことをやっていて、「それ awk でできるよ」と思ったので

基本

sample-1.txt
3
4
5
6

こういうファイルがあった時に

$ awk '{s += $1} END {print s}' < sample-1.txt
18

という具合に集計できる。

カラムが複数

sample-2.txt
1 5
2 6
3 7
4 8

みたいにカラムが 2 つあっても簡単。

$ awk '{a += $1; b += $2} END {print a, b}' < sample-2.txt
10 26

3 つ以上の時も同じように伸ばして行けば OK

応用

sample-3.txt
a
a
a
a
a
a
a
b
b
b
c

普通に sort | uniq -c すると空白で整形されて出力される。

$ sort -n < sample-3.txt | uniq -c
   7 a
   3 b
   1 c

awk 使えば整形してさらに合計を出したりできる。
↓ の結果はカラムを並び替え、「計」をつけてみた。

$ sort -n < sample-3.txt | uniq -c | awk '{a+=$1; print $2, $1} END {print "計”, a}'
a 7
b 3
c 1
計 11

個人的には、 Perl ワンライナーよりも覚えやすいと感じるので重宝している。

83
63
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
83
63