uniq
uniq -u
両方の説明は「ユニークな行だけ」ですが、両方とは異なる操作を実行しているようです。
ここでの違いは何ですか?
答え1
テストするのは簡単です。
$ cat file
1
2
3
3
4
4
$ uniq file
1
2
3
4
$ uniq -u file
1
2
つまり、uniq
オプションを使用しない場合は、連続した重複行のインスタンスを 1 つだけ除いてすべて削除されます。 GNUuniq
マニュアルには次のように記載されています。
オプションがない場合、一致する行は最初の項目にマージされます。
しかし、POSIX と
[...] 出力に各入力ラインのコピーを書き込みます。重複した隣接入力ラインの2番目とそれ以降のコピーを作成しないでください。
この-u
オプションを使用すると削除されます。みんな行のインスタンスは繰り返し繰り返され、繰り返されない行だけが残ります。 GNUuniq
マニュアルには次の内容があります。
ユニークな行だけを印刷
POSIX と
入力に重複した行を書き込むのを抑制します。
答え2
~からユニーク(1):
NAME uniq - report or omit repeated lines DESCRIPTION ... With no options, matching lines are merged to the first occurrence. ... -u, --unique only print unique lines
試してみると次のようになります。
$ cat file
cat
dog
dog
bird
$ uniq file
cat
dog
bird
$ uniq -u file
cat
bird
uniq
重複行の最初のインスタンスが印刷されていることがわかります。uniq -u
重複した行を印刷しないでください。
答え3
許可された回答に対する元のポスターのコメントを考えると、他の例がコマンドの違いとポイントを説明するのに役立つと思います。
何らかの理由で、行の間に空白行が繰り返され、先頭と最後に空白行があるテキストセクションがあるとします。
$ cat declaration_quote.txt
We hold these truths to be self-evident, that all men are created equal, that
they are endowed by their Creator with certain unalienable Rights, that among
these are Life, Liberty and the pursuit of Happiness.
空行の間隔が十分であると確信している場合は、次のようになりuniq
ます。
- 繰り返されない上下のすべての行(ここには、開始と終了にテキストと単一の空行がある行があります)
- 隣接する反復行の各セットの1行(ここでは、最初の行と最後の行を除く空白行)です。
そうではない」すべてのことは一度だけ起こる「、代わりに」連続グループごとに1回各空行セットから別々の空行を受け取るからです。このようなことが2回以上起こりました。また、すぐ上または下に空白行がないため、先行および末尾の空白行が維持されます。
$ uniq declaration_quote.txt
We hold these truths to be self-evident, that all men are created equal, that
they are endowed by their Creator with certain unalienable Rights, that among
these are Life, Liberty and the pursuit of Happiness.
uniq -u
これらの二重間隔がまったく必要ないと判断した場合は、すぐに繰り返されない上下の行のすべての行のみを取得するために使用できます。しかし、まだではない」一度だけ現れるもの「テキストに空白行が多い場合でも、1つの空白行(開始と終了)を削除しないためです。」すぐに繰り返されないことだけを行う」。
$ uniq -u declaration_quote.txt
We hold these truths to be self-evident, that all men are created equal, that
they are endowed by their Creator with certain unalienable Rights, that among
these are Life, Liberty and the pursuit of Happiness.