🔄 uniq: кратко и по делу#

uniq — утилита для фильтрации, подсчёта и анализа уникальных строк в Linux.
Обычно используется вместе с sort, так как uniq удаляет только подряд идущие дубликаты.


📝 Топ‑20 ключевых флагов и приёмов uniq#

  • uniq file.txt — удалить подряд идущие дубликаты.
  • uniq -d file.txt — вывести только повторяющиеся строки.
  • uniq -u file.txt — вывести только уникальные строки.
  • uniq -c file.txt — подсчитать количество вхождений каждой строки.
  • uniq -ic file.txt — подсчёт без учёта регистра.
  • uniq -f 1 file.txt — игнорировать первые 1 поле при сравнении.
  • uniq -s 3 file.txt — игнорировать первые 3 символа при сравнении.
  • uniq -w 10 file.txt — сравнивать только первые 10 символов.
  • uniq --all-repeated=separate file.txt — показать все повторяющиеся блоки.
  • uniq --group file.txt — группировать строки по уникальности.
  • uniq -D file.txt — вывести все дубликаты, включая повторения.
  • uniq -z file.txt — использовать нулевой байт как разделитель строк.
  • uniq -ci file.txt — подсчёт строк без учёта регистра.
  • uniq -f 2 -c file.txt — подсчёт уникальных строк, начиная сравнение с третьего столбца.
  • uniq --help — помощь.
  • uniq --version — версия утилиты.
  • uniq -u -i file.txt — уникальные строки без учёта регистра.
  • uniq -D -i file.txt — все дубликаты без учёта регистра.
  • uniq -c -f 2 file.txt — считать уникальные строки, начиная со второго поля.
  • uniq -s 5 -w 15 file.txt — игнорировать первые 5 символов, сравнивать только 15.

🚀 Айсберг команд uniq — от базового к гуру#

🟢 Уровень 1 — База (разогрев)#

uniq data.txt

  • Удалить подряд идущие дубликаты

uniq -d data.txt

  • Показать только дубли

uniq -u data.txt

  • Показать только уникальные строки

uniq -c data.txt

  • Подсчитать количество вхождений

uniq -ic data.txt

  • Подсчёт без учёта регистра

🟡 Уровень 2 — Работа с регистрами и символами#

uniq -i data.txt

  • Игнорировать регистр

uniq -s 3 data.txt

  • Игнорировать первые 3 символа

uniq -w 8 data.txt

  • Сравнивать только первые 8 символов

uniq -u -i data.txt

  • Только уникальные строки без учёта регистра

uniq -D -i data.txt

  • Все дубликаты без учёта регистра

🟠 Уровень 3 — Работа с полями#

uniq -f 1 data.txt

  • Игнорировать первое поле

uniq -f 2 data.txt

  • Игнорировать первые два поля

uniq -f 2 -c data.txt

  • Подсчёт уникальных строк, начиная с третьего столбца

uniq -s 5 -w 10 data.txt

  • Пропустить первые 5 символов и сравнивать 10

uniq -f 1 -i data.txt

  • Игнорировать первое поле, сравнивая без регистра

🔵 Уровень 4 — Подсчёт и сортировка#

sort data.txt | uniq -c

  • Подсчитать уникальные строки

sort data.txt | uniq -d

  • Показать только повторяющиеся

sort data.txt | uniq -u

  • Показать только уникальные

sort data.txt | uniq -ci

  • Подсчёт без учёта регистра

sort data.txt | uniq -c | sort -nr

  • Вывести топ строк по частоте

🟣 Уровень 5 — Работа с CSV и разделителями#

cut -d, -f2 data.csv | sort | uniq -c

  • Подсчёт уникальных значений второго столбца CSV

awk -F"," '{print $3}' data.csv | sort | uniq -c

  • То же самое через awk

sort -t, -k2 data.csv | uniq -f1

  • Игнорировать первый столбец при подсчёте

cat data.csv | cut -d, -f1 | uniq

  • Уникальные значения первого столбца

sort -t, -k3 data.csv | uniq -c

  • Подсчитать количество по третьему столбцу

🔴 Уровень 6 — Гуру‑режим#

uniq --all-repeated=separate data.txt

  • Показать все группы повторяющихся строк

uniq --group data.txt

  • Сгруппировать уникальные и повторяющиеся строки

uniq -z data.txt

  • Использовать нулевой байт как разделитель

uniq -D data.txt

  • Показать все дубликаты

sort data.txt | uniq --group | less

  • Группировать и просматривать с прокруткой

🟤 Уровень 7 — Автоматизация и интеграция#

grep "error" logs.txt | sort | uniq -c | sort -nr | head -10

  • Топ-10 ошибок в логах

awk '{print $1}' data.txt | sort | uniq -c | sort -nr

  • Частотный анализ первого столбца

ps aux | awk '{print $1}' | sort | uniq -c

  • Сколько процессов у каждого пользователя

cat emails.txt | sort | uniq -ci

  • Подсчёт email-адресов без учёта регистра

journalctl | grep sshd | awk '{print $11}' | sort | uniq -c | sort -nr

  • Топ-авторизаций по IP

🧩 Бонус — практические сценарии#

Подсчёт частоты ошибок в логах:

grep "ERROR" app.log | sort | uniq -c | sort -nr | head -10

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

sort data.txt | uniq -d

Показать уникальные значения второго поля CSV:

cut -d, -f2 data.csv | sort | uniq

Посчитать уникальных IP в логах Nginx:

awk '{print $1}' access.log | sort | uniq -c | sort -nr | head -10

Найти топ-5 пользователей по количеству процессов:

ps aux | awk '{print $1}' | sort | uniq -c | sort -nr | head -5