重複行数をカウント

uniqコマンドの-cオプションを使用すると、連続する重複行を削除しつつ各行の重複数をカウントできる。

$ cat sample.txt
apple
apple
banana
banana
banana
banana
orange
apple
$ uniq -c sample.txt
      2 apple
      4 banana
      1 orange
      1 apple

連続しないと重複行はカウントされないため、全体での重複数をカウントしたい場合は、事前にsortコマンドでソートする必要がある。

$ sort sample.txt | uniq -c
      3 apple
      4 banana
      1 orange

行数の多い順に並び替える

uniq -cの出力を行数の多い順に並び替えたい場合は、さらにsortコマンドの-nrオプションを使用する。

$ sort sample.txt | uniq -c | sort -nr
      4 banana
      3 apple
      1 orange

sort-nオプションは数値としてソートする。-nオプションをつけない場合は辞書順となる。
数値の場合は2 < 10だが辞書順の場合は2 > 10となるため重複数順に並び替えるためには-nオプションが必要。

また-rオプションは降順に並び替える。昇順にしたい場合は-rオプションを省略すればよい。