sort | uniq
існував раніше sort -u
і сумісний з більш широким спектром систем, хоча майже всі сучасні системи підтримують -u
- це POSIX. Це здебільшого повернення до днів, коли sort -u
їх не існувало (і люди не прагнуть змінювати свої методи, якщо спосіб, який вони знають, продовжує працювати, просто подивіться ifconfig
проти ip
прийняття).
Ці два, ймовірно, об'єднані, оскільки для видалення дублікатів у файлі потрібна сортування (принаймні, у стандартному випадку), і це надзвичайно поширений випадок використання сортування. Це також швидше внутрішньо, внаслідок можливості одночасно робити обидві операції (і через те, що він не вимагає 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
«s $PIPESTATUS
масив, але це не завжди вірно).