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コマンド【 cut 】ファイルの各行から一部分を切り出す
  2. Linuxコマンド【 tail 】ファイルの末尾数行を表示する
  3. Linuxコマンド【 iconv 】ファイルの文字コードを変換する
  4. Linuxコマンド【 tr 】文字列を変換・削除する
  5. Linuxコマンド【 head 】ファイルの先頭数行を表示する
  6. Linuxコマンド【 strings 】バイナリファイルの中身を確認する
  7. manコマンドの表示を日本語にする方法
  8. Linuxコマンド【 grep 】パターンにマッチする行を表示する
  9. Linuxコマンド【 nkf 】文字コードを変換する
  10. cmp - ファイルを1バイトずつ比較 - Linuxコマンド

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