TGViewer
BashTex | Linux BashTex | Linux @bash_tex · 2.51K subscribers
Post #615 475
Почему sort | uniq не всегда работает так, как ожидается

Когда нужно убрать дубликаты, многие сразу пишут:

sort file.txt | uniq


Работает. Но только если понимать, что именно делает каждая команда.

▪️Как работает uniq

Распространённое заблуждение - uniq ищет все повторяющиеся строки.

На самом деле он удаляет только соседние дубликаты.

Например:

apple
banana
apple
orange


Если выполнить:

uniq file.txt


получим тот же самый список - одинаковые строки не стоят рядом.

▪️Зачем нужен sort

После сортировки одинаковые строки оказываются соседними:

sort file.txt | uniq


Результат:

apple
banana
orange


Именно поэтому эти команды почти всегда используются вместе.

▪️Когда сортировка не подходит

Если порядок строк важен, sort изменит его.
Например, при анализе логов или событий по времени это может полностью исказить картину.

В таких случаях лучше использовать:

awk '!seen[$0]++'


Команда удаляет дубликаты, но сохраняет исходный порядок строк.

▪️Найти только повторяющиеся строки

Иногда нужны не уникальные записи, а наоборот - только дубликаты:

sort file.txt | uniq -d


Или вывести количество повторений:

sort file.txt | uniq -c


Получим:

15 nginx
8 sshd
3 cron


▪️Почему это важно

uniq кажется простой утилитой, но ошибка в понимании её работы часто приводит к неверным результатам. Перед использованием всегда стоит помнить: она сравнивает только соседние строки, а не весь файл целиком.

BashTex 📱 #sort
  • 👍 7
More from @bash_tex
  1. Oct 7, 2026/dev/tcp - сетевое соединение средствами Bash В Bash есть малоизвестная возможность работа…
  2. Oct 6, 2026Ephemeral ports - почему заканчиваются исходящие TCP-порты Когда приложение устанавливает…
  3. Oct 5, 2026name_to_handle_at() - как получить файловый объект без обычного пути В Linux обычно обраща…
  4. Oct 2, 2026madvise() - как процесс подсказывает ядру, как он собирается использовать память Когда про…
  5. Oct 1, 2026flock vs fcntl - почему две блокировки одного файла могут вести себя совершенно по-разному…
  6. Sep 30, 2026DEBUG trap - как Bash выполняет код перед каждой командой В Bash есть специальный DEBUG tr…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →