Linux:uniqコマンドで重複する行をカウントする方法

スポンサーリンク

uniqコマンドで重複する行をカウントする方法

uniqコマンドで重複する行をカウントするには-cオプションを指定します。

 

オプションの説明

  -c, --count           prefix lines by the number of occurrences
  -d, --repeated        only print duplicate lines, one for each group

 

以下のテキストを処理するとします。

$ cat test.txt
apple
apple
banana
lemon
orange
orange
orange
lemon
apple
orange

 

-cオプションを指定した場合。

$ uniq -c test.txt
      2 apple
      1 banana
      1 lemon
      3 orange
      1 lemon
      1 apple
      1 orange

ファイル全体に対して重複する行をカウントしたい場合はsort後に実行します。

$  sort test.txt | uniq -c
      3 apple
      1 banana
      2 lemon
      4 orange

 

2行以上のみを抽出したい場合は-dオプションを指定します。

$ sort test.txt | uniq -c -d
      3 apple
      2 lemon
      4 orange

 

カウント数でソートしたい場合は最後にsortします。

$ sort test.txt | uniq -c | sort -nr
      4 orange
      3 apple
      2 lemon
      1 banana