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 を確認してください。