Table of Contents
🔄 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