1. 概要

このチュートリアルでは、Linuxコマンドsort|を簡単に比較します。 uniqおよびsort-u。 どちらもsortを使用してリストから重複エントリを削除しますが、動作は少し異なります。

以下のすべてのコマンドはプラットフォームに依存しないことに注意してください。

2. 基本的な使用法

colorという名前のファイルの色のリストから始めましょう。

% cat color
Black
green
red
red
yellow
Green
red

重複を削除したい場合は、uniqが機能する場合があります。 uniqのマニュアルページを確認します。

入力内の繰り返し行は、隣接していない場合は検出されないため、最初にファイルを並べ替える必要がある場合があります。

私たちのリストの場合、リストには「赤」の重複した非隣接エントリがあるため、結果は一意のエントリのリストにはなりません。

% uniq color
Black
green
red
yellow
Green
red

これを回避する方法はいくつかあります。 まず、-u引数をuniqとともに使用すると、隣接および非隣接の両方のすべての重複が削除されます。

% uniq -u color
Black
green
yellow
Green
red

または、マニュアルページの提案に従って、 uniq を呼び出す前にリストを並べ替えると、重複がすべて削除されます。

リストの並べ替えは簡単です。

% sort color
Black
Green
green
red
red
red
yellow

これをuniqにパイプすると、次のようになります。

% sort color | uniq
Black
Green
green
red
yellow

ここで、 sort のマニュアルページを確認すると、-uフラグが同じ出力を提供することがわかります。

% sort -u color
Black
Green
green
red
yellow

したがって、一般的に言えば、両方のソート| uniqsort-uは同じことをします。 しかし、いくつかの違いがあります。

たとえば、 sort には、区切り文字での並べ替えなど、他のオプションがあります。 ただし、 -u を使用するか、 uniqに配管するかに関係なく、これらを使用できます。

3. 一意のエントリのカウント

ユニークなアイテムのリストを見つけたら、多くの場合、ユニークなアイテムの数も知りたいと思うでしょう。 uniq-cオプションは、重複した各行のカウントを返します。

% uniq -c color
   1 Black
   1 green
   2 red
   1 yellow
   1 Green
   1 red

一種の便利ですが、隣接していない重複を無視するという問題が再び発生します。 これを回避するには、最初にリストを並べ替えてから、出力をuniqにパイプします。

sort color | uniq -c
   1 Black
   1 Green
   1 green
   3 red
   1 yellow

これで、隣接関係に関係なく、一意のエントリのリストができました。

さらに一歩進んで、リスト内の一意のアイテムの数が必要だとします。 wcにパイプできます。

% sort color | uniq | wc -l
       5

または、uniqの代わりにsort-uを使用します。

% sort -u color | wc -l
       5

そして、私たちは私たちのユニークなリストアイテムの数を取得します。

4. 概要

この短い記事では、sort|の使用の違いについて説明しました。 uniqおよびsort-u