Linux:uniqコマンドで重複する行のみを抽出する方法

スポンサーリンク

uniqコマンドで重複する行のみを抽出する方法

uniqコマンドで重複する行のみを抽出するには-dオプションまたは-Dオプションを指定します。

 

オプションの説明

  -d, --repeated        only print duplicate lines, one for each group
  -D, --all-repeated[=METHOD]  print all duplicate lines
                          groups can be delimited with an empty line
                          METHOD={none(default),prepend,separate}

 

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

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

 

-dオプションは重複する行をまとめて抽出します。

$ uniq -d test.txt
apple
orange

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

$  sort test.txt | uniq -d
apple
lemon
orange

 

-Dオプションはすべての重複する行を抽出します。

$ uniq -D test.txt
apple
apple
orange
orange
orange

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

$   sort test.txt | uniq -D
apple
apple
apple
lemon
lemon
orange
orange
orange
orange

 

なお、--all-repeated=separateオプションを指定すると空行でグループを分けることができます。

$ sort test.txt | uniq --all-repeated=separate
apple
apple
apple

lemon
lemon

orange
orange
orange
orange