ソートされた一意のリストを取得する必要がある人を見るたびに、彼らは常にこれをsort | uniq
。私はそれが使用される例を見たことがありませんsort -u
。なぜできないの?違いは何ですか?ソート時にユニークフラグよりuniqを使用する方が良いのはなぜですか?
ベストアンサー1
sort | uniq
以前にもあり、sort -u
より広い範囲のシステムと互換性がありますが、ほとんどすべての最新システムがこれをサポートしています。-u
まさにPOSIXです。これはほとんど存在しなかった時代の後退です(人々は、既知の方法が機能し続けることがわかっている場合は、自分の方法を変える傾向がないでしょう。養子縁組と比較してみてくださいsort -u
)。ifconfig
ip
ファイルから重複エントリを削除するには、ソート(少なくとも標準ケースでは)が必要で、ソートのための非常に一般的なユースケースなので、2つはマージされる可能性が高いです。両方のタスクを同時に実行する能力のため(そしてIPCは必要ありません(プロセス間通信)間uniq
)sort
。特に、ファイルが大きい場合、照合sort -u
に使用される中間ファイルの数が少なくなる可能性があります。
私のシステムでは、次の結果が引き続き表示されます。
$ dd if=/dev/urandom of=/dev/shm/file bs=1M count=100
100+0 records in
100+0 records out
104857600 bytes (105 MB) copied, 8.95208 s, 11.7 MB/s
$ time sort -u /dev/shm/file >/dev/null
real 0m0.500s
user 0m0.767s
sys 0m0.167s
$ time sort /dev/shm/file | uniq >/dev/null
real 0m0.772s
user 0m1.137s
sys 0m0.273s
また、重要な可能性のある戻りコードをマスクしません(最新のシェルには、配列のようにsort
これを取得するためのいくつかの方法がありますが、これは常に正しいとは限りません)。bash
$PIPESTATUS