[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
uniq
: ファイルから重複を省くuniq
は、指定された input ファイルにある行を、重複を省いて書き出す。
ファイルが指定されていない場合や、input として
‘-’ が指定されている場合は、標準入力を対象とする。
書式:
uniq [option]… [input [output]] |
デフォルトでは、uniq
は入力された行を表示するとき、
隣接する同一行があれば、出力に重複する行が現れないように、最初の行だけを残して、
残りの行を捨ててしまう。また、オプションによっては、重複しない行を捨てることや、
すべての隣接する同一行を捨てることもできる。
入力はソートされている必要はないが、重複する入力行が検出されるのは、
それが隣接しているときだけである。もし、隣接していない重複行も捨てたいのなら、
sort -u
を使うとよいだろう。 See section sort
: テキストファイルを並べ替える.
比較には LC_COLLATE
ロケール・カテゴリが指定しているルールを使用する。
output ファイルが指定されていない場合、uniq
は標準出力に書き出す。
このプログラムでは以下のオプションが使用できる。参照: 共通オプション.
重複の検査を行う前に、各行のフィールドを n 個スキップする。その行に n 個より少ないフィールドしかない場合は、比較に空の文字列を使用する。 フィールドとは、少なくとも 1 個以上のスペースやタブで間を区切られた、スペースやタブを含まない文字の連続である。
互換性のために、uniq
は ‘-n’ という旧来のオプション書式をサポートしている。
新しいスクリプトでは、‘-f n’ の方を使うべきである。
重複の検査を行う前に、n 文字スキップする。 その行に n 個より少ない文字しかない場合は、比較に空の文字列を使用する。 フィールドをスキップするオプションと、文字をスキップするオプションの両方を使っている場合は、 フィールドのスキップが先に行われる。
POSIX 1003.1-2001 に準拠していないシステムでは、uniq
が
‘+n’ という旧来のオプションの書式をサポートしている。
この旧来の書式は、環境変数 _POSIX2_VERSION
を使えば、コントロールできるが (see section 規格への準拠)、
移植を考慮したスクリプトでは、この環境変数に動作が依存するコマンドの使用は、避けた方がよい。
たとえば、‘uniq +10’ ではなく、‘uniq ./+10’ や ‘uniq -s 10’
を使うべきだ。前者では、‘+10’ が、オプションかファイル名か、まぎらわしいからである。
各行に出現回数を付けて表示する。
行を比較するとき、アルファベットの大文字小文字を区別しない。
重複していない行を除去する。このオプションを単独で使った場合、uniq
は、連続する同一行のうち、最初の 1 行だけを表示し、それ以外の何も表示しない。
入力行のうち、連続する同一行の二行目以降を除去せず、重複していない行だけを除去する。 このオプションが役に立つのは、主として、大文字小文字を無視するとか、 選択したフィールドのみを比較するとかいった、他のオプションと組み合わせて使うときである。 長い書式のオプションで使用できる delimit-method は、 省略可能であり、指定した場合は、重複行のグループ間の区切り方を指示することになる。 delimit-method は、以下の一つでなければならない。
重複行のグループ間に、区切りの印を置かない。‘--all-repeated’ (‘-D’) とのみ指定するのと同じことである。
重複行の各グループの前に改行を出力する。 ‘--zero-terminated’ (‘-z’) を指定している場合は、 区切りの印として改行の代わりに、ゼロバイト (ASCII NUL) を使用する。
重複行のグループ間を 1 個の改行で分離する。これは、‘prepend’ を使うのとほぼ同じだが、最初のグループの前に区切りの印を挿入しないのが異なっている。 それ故、ユーザが出力を直接見る場合に、より適しているかもしれない。‘--zero-terminated’ (‘-z’) を指定している場合は、 区切りの印として改行の代わりに、ゼロバイト (ASCII NUL) を使用する。
注意していただきたいが、グループ同士を改行で分離しているとき、 入力ストリームに複数の空行があると、出力がまぎらわしいものになる。 これを避けるには、入力を ‘tr -s '\n'’ でフィルタリングして、 複数の空行をなくせばよい。
このオプションは、GNU による拡張である。
すべての行を出力し、他と区別される各グループの間に区切りを入れる。 ‘--zero-terminated’ (‘-z’) を指定している場合は、 区切りの印として改行の代わりに、ゼロバイト (ASCII NUL) を使用する。 delimit-method は省略可能であり、指定した場合は、グループ間の区切り方を指示することになる。 delimit-method は、以下の一つでなければならない。
他と区別されるグループを 1 個の区切りの印で分離する。 これが、何も指定されていないときの、デフォルトの区切り方であり、 出力をユーザに直接見せる場合に適している。
他と区別される各グループの前に区切りの印を出力する。
他と区別される各グループの後ろに区切りの印を出力する。
他と区別される各グループの前後に区切りの印を出力する。
注意していただきたいが、グループ同士を改行で分離しているとき、 入力ストリームに複数の空行があると、出力がまぎらわしいものになる。 これを避けるには、入力を ‘tr -s '\n'’ でフィルタリングして、 複数の空行をなくせばよい。
このオプションは、GNU による拡張である。
重複する入力行のグループを表示するときは (訳注: すなわち、‘--all-repeated’ (‘-D’) オプションを使用しているときは)、グループの最後の行を表示しない。 このオプションを単独で使用する場合は、ユニークな (訳注: この場合は、同一行が連続していないという意味) 行だけを表示し、それ以外の何も表示しない。
各行で (フィールドや文字をスキップする指定があれば、スキップした後で) 文字を何個まで比較するかを指定する。デフォルトでは、行の残り全部が比較の対象になる。
項目の区切りに、改行 (ASCII LF) ではなく、ゼロバイトを使用する。 すなわち、入力を ASCII NUL で分離された項目として扱い、出力する各項目の末尾に ASCII NUL を付加する。このオプションは、‘perl -0’, ‘find -print0’, ‘xargs -0’ などと組み合わせて使用すると、 便利なことがある。そうしたコマンドでも、わがままなファイル名を (空白などの特殊文字を含んでいる場合でも) きちんと確実に処理するために、 同様なことをしているのである。 ‘-z’ オプションを使用した場合、改行文字はフィールド・セパレータ扱いになる。
終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
This document was generated on June 7, 2022 using texi2html 1.82.