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