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

関連コマンド

cmp, diff, sort, wc

テキスト の人気記事

  1. Linuxコマンド【 tail 】ファイルの末尾数行を表示する
  2. コマンドリファレンス
  3. Linuxコマンド【 cut 】ファイルの各行から一部分を切り出す
  4. manコマンドの表示を日本語にする方法
  5. Linuxコマンド【 column 】入力を表形式に整形する
  6. unexpand - スペースをタブに変換 - Linuxコマンド
  7. Linuxコマンド【 head 】ファイルの先頭数行を表示する
  8. Linuxコマンド【 strings 】バイナリファイルの中身を確認する
  9. Linuxコマンド【 iconv 】ファイルの文字コードを変換する
  10. Linuxコマンド【 tr 】文字列を変換・削除する

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