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
массив, но это не всегда верно).