Команды wc, sort и uniq: посчитать строки, отсортировать и найти повторы
wc считает строки и слова, sort выстраивает строки по порядку, uniq убирает и считает повторы. Вместе они за одну команду показывают, кто больше всех заходит на сайт и какие ошибки он получает.
Содержание 8
Что сделать прямо сейчас
- Подключитесь к серверу — инструкция.
- Посчитайте строки в журнале nginx:
sudo wc -l /var/log/nginx/access.log. Число слева — сколько запросов записано в журнал. - Узнайте, с каких IP больше всего запросов, — скопируйте команду ниже.
sudo awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | head -20Команда берёт из каждой строки журнала IP-адрес, выстраивает адреса по порядку, считает повторы, ставит самые большие числа наверх и показывает первые 20 строк. Слева — сколько запросов, справа — адрес. О знаке | — Перенаправление вывода.
wc — посчитать
| Команда | Что покажет |
|---|---|
wc -l file.txt | число строк и имя файла |
wc -w file.txt | число слов |
wc -m file.txt | число символов |
wc -c file.txt | размер в байтах |
wc file.txt | строки, слова и байты сразу |
wc -l < file.txt | только число, без имени файла |
wc считает и вывод других команд. ls | wc -l — сколько файлов в папке, grep error app.log | wc -l — сколько строк со словом error. Для второго есть и короткий путь: grep -c error app.log — Команда grep.
sort — отсортировать
| Команда | Что делает |
|---|---|
sort file.txt | по алфавиту |
sort -r file.txt | в обратном порядке |
sort -n file.txt | по числам: 9 раньше 10 |
sort -rn file.txt | по числам, большие наверху |
sort -h file.txt | по размерам вида 900M и 2G |
sort -u file.txt | по алфавиту и без повторов |
sort -t: -k3 -n /etc/passwd | по третьему полю, поля разделены двоеточием: пользователи по номеру UID |
sort -o file.txt file.txt | отсортировать файл и записать результат в него же |
Какие папки занимают больше всего места, покажет sudo du -sh /var/* | sort -h: самые большие окажутся внизу. Подробно о du — Команды df и du.
uniq — убрать и посчитать повторы
uniq сравнивает каждую строку только с соседней. Поэтому сначала строки сортируют: sort ставит одинаковые рядом. В примерах ниже вывод sort передают в uniq, например sort file.txt | uniq -c.
| Команда | Что делает |
|---|---|
uniq | убрать повторы |
uniq -c | перед каждой строкой — сколько раз она встретилась |
uniq -d | только строки, которые повторяются |
uniq -u | только строки без повторов |
uniq -i | не различать заглавные и строчные буквы |
Готовые команды для журнала nginx
В журнале nginx первое слово строки — IP посетителя, седьмое — адрес страницы, девятое — код ответа. awk выбирает нужное слово: $1, $7 или $9.
Какие страницы открывают больше всего:
sudo awk '{print $7}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | head -20Сколько каких кодов ответа — 200, 404, 500 и других:
sudo awk '{print $9}' /var/log/nginx/access.log | sort | uniq -c | sort -rnКакие адреса отвечают ошибкой 404:
sudo awk '$9 == 404 {print $7}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | head -20Сколько разных IP заходило:
sudo awk '{print $1}' /var/log/nginx/access.log | sort -u | wc -lЕсли в nginx задан свой формат журнала, номера слов будут другими — сверьте их по одной строке журнала: sudo tail -n 1 /var/log/nginx/access.log.
Ошибки и как их исправить
| Что видно | Что значит | Что сделать |
|---|---|---|
| uniq не убрал повторы | одинаковые строки стоят не рядом | поставьте перед ним sort: sort file.txt и затем uniq |
| 10 стоит раньше 9 | sort сравнивает числа как текст | добавьте -n |
после du -sh 2G стоит выше 900M | sort не понимает буквы размера | используйте sort -h |
файл стал пустым после sort file.txt > file.txt | знак > очистил файл раньше, чем sort его прочитал | восстановите файл из копии; в следующий раз — sort -o file.txt file.txt |
wc -l показал на одну строку меньше | wc считает переводы строк, а в конце последней строки его нет | ничего страшного; строк на одну больше |
wc -c больше, чем букв в русском тексте | -c считает байты, а русская буква занимает два байта | используйте wc -m |
| порядок строк не такой, как ждали | порядок зависит от языковых настроек | для порядка по кодам символов: LC_ALL=C sort file.txt |
Permission denied при чтении журнала | журнал доступен не всем | добавьте sudo перед командой, которая читает файл |
Источники
- Справка wc для Ubuntu 24.04 — ключи -l, -w, -c, -m; -l считает переводы строк; без файла читает ввод.
- Справка sort для Ubuntu 24.04 — ключи -n, -h, -r, -u, -k, -t, -o; влияние языковых настроек на порядок и LC_ALL=C.
- Справка uniq для Ubuntu 24.04 — ключи -c, -d, -u, -i; uniq находит только повторы, идущие подряд.
- Справка head для Ubuntu 24.04 — по умолчанию первые 10 строк, ключ -n.
- Документация nginx: формат журнала combined — IP посетителя первым полем, затем запрос и код ответа.
Сверено 11 октября 2026 года.
Что почитать дальше
- Команда grepнайти строки со словом.
- Перенаправление выводакак работают
|и>. - cat, less, head и tailкак посмотреть файл и его конец.
- Команды Linux для новичкашпаргалка по командам.
Проверено и обновлено: 11.10.2026