すべてを

▼開く

閉じる▲

テキストファイルの重複行を削除する

○ファイル「composer.txt」の重複行を削除する

catコマンドでファイルの内容を見る
$ cat composer.txt
Bach            1685
Beethoven       1770
Beethoven       1770
Chopin          1810
Hendel          1685
Mozart          1756
Mozart          1756

uniqコマンドでファイルを指定する
$ uniq composer.txt
Bach            1685
Beethoven       1770
Chopin          1810
Hendel          1685
Mozart          1756

uniqコマンドでファイル「composer.txt」を指定すると、ファイル中の重複行が削除される。ファイルは事前にソートしておかなくてはならない。uniqコマンドは、隣同士の同じ内容の行を削除するだけである。

●内容が異なる行は重複と見なされない

$ uniq composer.txt
Bach            1685
Beethoven       1770
Beethoven       1770-1827
Chopin          1810
Hendel          1685
Mozart          1756

2行目と3行目は内容が異なるので重複と見なされないため削除されない。

●ソートされていない場合は重複を見つけられない

catコマンドでソートされていないファイルを見る
$ cat composer.txt
Beethoven       1770
Mozart          1756
Chopin          1810
Mozart          1756
Hendel          1685
Beethoven       1770
Bach            1685

$ uniq composer.txt
Beethoven       1770
Mozart          1756
Chopin          1810
Mozart          1756
Hendel          1685
Beethoven       1770
Bach            1685

uniqコマンドは、隣り合う同じ行を削除するだけなので、ソートされていない場合は重複を見つけられない。

テキストファイル(日本語)の重複行を削除する

○ファイル「composer_j.txt」の重複行を削除する

catコマンドでファイルの内容を見る
$ cat composer_j.txt
ショパン        1810
バッハ          1685
ヘンデル        1685
ベートーベン    1770
ベートーベン    1770
モーツァルト    1756
モーツァルト    1756

uniqコマンドでファイルを指定する
$ uniq composer_j.txt
ショパン        1810
バッハ          1685
ヘンデル        1685
ベートーベン    1770
モーツァルト    1756

uniqコマンドでファイル「composer_j.txt」を指定すると、ファイル中の重複行が削除される。ファイルは事前にソートしておかなくてはならない。uniqコマンドは、隣同士の同じ内容の行を削除するだけである。