6.12. テキストファイルの重複行を削除【uniq】

$ uniq ファイル名 [出力ファイル]

テキストファイル内の重複した行を削除し、1 行にまとめて出力するには uniq コマンドを使用します。ただし、uniq コマンドを使用するには、テキストファイル内の行をソートしておく必要があります。結果をファイルとして保存したい場合は、出力ファイル名を指定します。指定しなければ標準出力に表示されます。なお、sort コマンドには、重複行を表示しない -u オプションがありますので、sort コマンド実行時に -u オプションを指定すれば同じ結果が得られます。

例えば、sample.txt の内容を cat コマンドで表示します。

$ cat sample.txt 
Taro Yamada
Taro Yamada
Taro Yamada
Jiro Tanaka
Hanako Suzuki
Kenta Nakamura
Kenta Nakamura
Saburo Kobayashi

このファイルに対し、uniq コマンドを実行すると以下のように重複行が削除されます。

$ uniq sample.txt
Taro Yamada
Jiro Tanaka
Hanako Suzuki
Kenta Nakamura
Saburo Kobayashi

-c オプションを指定すると、重複行の数が行頭に表示されます。

$ uniq -c hoge.txt 
      3 Taro Yamada
      1 Jiro Tanaka
      1 Hanako Suzuki
      2 Kenta Nakamura
      1 Saburo Kobayashi

以下に uniq コマンドの代表的なオプションを示します。

表 6-9. uniq コマンドのオプション

-c重複行の数を行頭に表示します。
-d重複行のみを表示します。
-uユニークな行のみを表示します。