GNU Core Utilities/uniq
uniq
コマンドは、重複行を削除するためのコマンドです。入力されたデータに含まれる連続した重複行を取り除き、ユニークな行を表示します。GNU coreutils に含まれており、Linux では GNU 版が、FreeBSD では BSD 版が提供されています。基本的な動作は共通していますが、細かなオプションの違いがあります。
基本的な使い方
編集uniq [オプション] 入力ファイル 出力ファイル
主なオプション(GNU coreutils版)
編集主なオプション オプション 説明 -c, --count
各行の出現回数を表示 -d, --duplicates
重複行のみ表示 -u, --unique
ユニークな行のみ表示 -i, --ignore-case
大文字と小文字を区別しない -f, --skip-fields=N
最初のNフィールドを無視 -s, --skip-chars=N
最初のN文字を無視 -w, --check-chars=N
最初のN文字だけを比較
例
編集重複行を削除
編集uniq file.txt
file.txt
の連続する重複行を削除。
重複行の出現回数を表示
編集uniq -c file.txt
各行の出現回数を表示しながら重複行を削除。
重複行のみ表示
編集uniq -d file.txt
重複行のみを表示。
ユニークな行のみ表示
編集uniq -u file.txt
ユニークな行のみを表示。
大文字と小文字を区別しないで重複行を削除
編集uniq -i file.txt
大文字と小文字を区別せずに重複行を削除。
最初のNフィールドを無視して重複行を削除
編集uniq -f 2 file.txt
最初の2フィールドを無視して重複行を削除。
最初のN文字を無視して重複行を削除
編集uniq -s 3 file.txt
最初の3文字を無視して重複行を削除。
最初のN文字だけを比較して重複行を削除
編集uniq -w 5 file.txt
最初の5文字を比較して重複行を削除。
FreeBSD 版との違い
編集FreeBSD でも uniq
コマンドは提供されていますが、GNU coreutils 版といくつか違いがあります。
主な違い:
編集-w
(最初のN文字比較)オプションが FreeBSD にはない- FreeBSD 版の
uniq
には、-w
オプションがないため、指定した文字数を比較することができません。
- FreeBSD 版の
-f
(フィールドを無視)オプションの挙動が異なる- FreeBSD 版の
uniq
では、-f
オプションの挙動が GNU 版とわずかに異なる場合があります。
- FreeBSD 版の
- GNU coreutils 版を FreeBSD で使う方法
coreutils
パッケージをインストールするとguniq
という名前で GNU 版uniq
が使える。
pkg install coreutils guniq file.txt # GNU coreutils 版の uniq
詳しくは、それぞれの環境で man uniq
を確認してください。