今日の人気記事

  1. chown - ファイルの所有者やグループを変更 - Linuxコマンド
  2. ssh - リモートマシンにSSHでログイン - Linuxコマンド
  3. sleep - 指定した時間だけ処理を遅延 - Linuxコマンド
  4. ファイルの解凍・圧縮 - Linuxコマンド一覧(.zip .gz .Z .bz2 tar.gz .tgz tar.Z .taz .tar.bz2 .tbz2)
  5. tar - アーカイブの作成・展開 - Linuxコマンド

uniq - ファイルの重複した行を削除・表示 - Linuxコマンド

スポンサーリンク

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

関連コマンド

cmp, diff, sort, wc

関連記事(一部広告含む)