導入
uniq は連続する重複行を1つにまとめます。「連続する」がポイントで、先に sort で同じ値を隣り合わせておくのが定石です。sort | uniq -c は「値ごとの件数を数える」ための黄金コンビです。
説明
まず sort で並べ、uniq で重複を1つにまとめます。
cut -d , -f 3 data.csv | tail -n +2 | sort | uniq
-c(count)を付けると、各行が何回出たかを頭に付けてくれます。これが集計の核心です。
cut -d , -f 3 data.csv | tail -n +2 | sort | uniq -c
さらに件数で並べ替えれば、「多い順ランキング」が完成します。sort -rn は数値の大きい順でしたね。
cut -d , -f 3 data.csv | tail -n +2 | sort | uniq -c | sort -rn
この ... | sort | uniq -c | sort -rn は、ログ解析でもアンケート集計でも使う万能パターンです。丸ごと覚えてしまいましょう。
やってみよう
... | sort | uniq と ... | sort | uniq -c を打ち比べて、-c が件数を付けてくれるのを確かめましょう。最後に | sort -rn を足して、多い順に並ぶのを見てください。
演習
data.csv の都市(3列目)ごとの人数を数え、多い順に並べてください。
ヒント1を見る
万能パターン ... | sort | uniq -c | sort -rn を使います。
ヒント2を見る
cut -d , -f 3 data.csv | tail -n +2 | sort | uniq -c | sort -rn