Топ адресов в журнале веб-сервера
Ответ на вопрос «кто чаще всего обращался»: адрес и число запросов, большие сверху.
Команда uniq схлопывает соседние одинаковые строки, а с -c считает их; перед ней почти всегда стоит sort.
sort file | uniq
убрать повторы
sort file | uniq -c
сколько раз каждая строка
sort file | uniq -c | sort -rn
частые сверху
sort file | uniq -d
только те, что повторяются
sort file | uniq -u
только те, что без пары
sort file | uniq -ci
не различать регистр
uniq сравнивает каждую строку с предыдущей. Одинаковые строки подряд превращаются
в одну, с -c перед ней печатается их число. Строки, разделённые другими, для
uniq разные:
Поэтому uniq почти всегда стоит после sort: сортировка собирает одинаковые
строки рядом. Сам по себе uniq удобен там, где повторы и так идут подряд, —
например, в журнале, где одна ошибка пишется много раз за секунду.
Число в uniq -c выровнено пробелами по правому краю. Для cut эти пробелы —
пустые колонки, поэтому счётчик дальше разбирают через sort -rn или awk.
sort -u даёт то же, что sort | uniq, но считать повторы умеет только uniq -c.
Полный список — man uniq.
| Ключ | Что делает | Пример |
|---|---|---|
-c --count |
Печатать перед строкой, сколько раз она повторилась подряд. | sort file | uniq -c |
-d --repeated |
Печатать по одной строке только из тех, что повторяются. | sort file | uniq -d |
-u --unique |
Печатать только строки без повторов. | sort file | uniq -u |
-i --ignore-case |
Не различать заглавные и строчные буквы. | sort -f file | uniq -ci |
-D --all-repeated |
Печатать все копии повторяющихся строк. | sort hosts.txt | uniq -D |
-f --skip-fields N |
Не сравнивать первые N колонок. | uniq -f1 -c events.log |
-w --check-chars N |
Сравнивать только первые N символов строки. | uniq -w8 -c ids.txt |
Ничего не найдено. Попробуй запрос короче.
Ответ на вопрос «кто чаще всего обращался»: адрес и число запросов, большие сверху.
-f N пропускает N колонок, разделённых пробелами, -w N сравнивает первые
N символов.
Повторы стоят не подряд. Отсортируй перед uniq: sort file | uniq.
Различаются невидимые символы: пробел в конце или \r из файла Windows. Посмотри
их через cat -A file — в конце строки будет ^M$ или пробел перед $. Убрать
\r — tr -d '\r'.
Перед числом стоят пробелы для выравнивания, и cut -d' ' видит пустые колонки.
Бери число через awk '{print $1}' или сортируй по нему sort -rn.
Файла нет по этому пути. Проверь имя через ls. Второе имя в
uniq in.txt out.txt — это файл для записи, а не второй входной файл.
uniq a.txt b.txt не сравнивает два файла: он читает a.txt и перезаписывает
b.txt результатом. Сравнивать списки — comm или diff, см. утилиты текста и
diff и patch.
|.Есть неточность? Сообщить об ошибке в статье