Linuxコマンド【 uniq 】ファイルの重複した行を削除・表示する
当ページのリンクには広告が含まれています。
スポンサーリンク
uniqコマンドは、入力ファイルから重複した行を削除、あるいは重複行を表示するコマンドです。
uniqコマンド
書式
uniq [オプション] [入力ファイル [出力ファイル]]
入力ファイルから行を読み込み、連続する同じ行(重複行)を削除します。そのため、コマンドを実行する前に入力ファイルをソートしておきましょう。sortコマンドを使うと便利です。使用例で後述します。
出力ファイルを指定した場合には、コマンドの実行結果を出力ファイルに保存。出力ファイルを指定しない場合は、コマンドの実行結果を標準出力に表示します。
オプション
-d | 重複した行のみを表示します。 |
-D | 重複するすべての行を表示します。 |
-f 項目数 | 指定した項目数をスキップします。 |
-i | 大文字・小文字を区別しません。 |
-s 文字数 | 指定した文字数をスキップします。 |
-u | 重複していない行のみを表示します。 |
-w 文字数 | 指定した文字数のみで重複を確認します。 |
使用例
重複した行をもつテキストファイル(hoge.txt)を使って、コマンドの挙動を確認します。
$ cat hoge.txt 0123456789 abcdefghij abcdefghij ABCDEFGHIJ 9876543210
重複した行を削除します(オプションなし)。
$ uniq hoge.txt 0123456789 abcdefghij ABCDEFGHIJ 9876543210
大文字・小文字を区別しません(オプション -i)。
$ uniq -i hoge.txt 0123456789 abcdefghij 9876543210
重複行のみを表示します(オプション -i)。
$ uniq -d hoge.txt abcdefghij
重複していない行のみを表示します(オプション -u)。
$ uniq -u hoge.txt 0123456789 ABCDEFGHIJ 9876543210
ソートされていないファイル(hogehoge.txt)から重複行を削除します。
$ cat hogehoge.txt 0123456789 abcdefghij 9876543210 ABCDEFGHIJ abcdefghij
「sortコマンド」の実行結果をパイプ(|)で渡して、uniqコマンドを実行します。
$ sort hogehoge.txt | uniq 0123456789 9876543210 ABCDEFGHIJ abcdefghij