Частая задача: есть файл с логами, списком ID, email-адресами или любыми строками, где встречаются повторы. Нужно быстро привести данные в порядок прямо в консоли.
Базовый инструмент —
uniq. Важно понимать: он удаляет только соседние одинаковые строки. Поэтому в большинстве случаев перед ним нужна сортировка.Самый простой вариант:
sort data.txt | uniq
Что здесь происходит:
sort сортирует строки, чтобы одинаковые значения оказались рядом, uniq убирает повторяющиеся соседние строки.Если нужны только строки, которые встретились ровно один раз:
sort data.txt | uniq -u
Если нужно посчитать, сколько раз встречается каждая строка:
sort data.txt | uniq -c
Если нужно сразу увидеть самые частые значения сверху:
sort data.txt | uniq -c | sort -nr
Практический пример для логов — топ IP по количеству запросов:
awk '{print $1}' access.log | sort | uniq -c | sort -nr | head
Если нужно записать результат обратно в тот же файл:
sort -u -o data.txt data.txt
Если важно игнорировать регистр:
sort -fu data.txt
Это эквивалентно связке с
uniq, но короче.Важно:
uniq не ищет все дубликаты по всему файлу — он работает только с соседними строками. Без sort он уберет только те повторы, которые уже идут подряд.🔥 Такого набора хватает для большинства задач: быстро почистить данные, посмотреть частоты, выявить лишние записи в логах.
🚪 Linux Ready | #практика