PQ
PQ.Hosting

Валюта

Как узнать количество строк в файле Linux: wc, grep, awk и сжатые файлы

Автор
PQ
11 марта 2026
3 мин чтения
40 просмотров
Как узнать количество строк в файле Linux: wc, grep, awk и сжатые файлы

Нужно понять насколько вырос лог за ночь. Или проверить сколько записей в CSV перед импортом. Или убедиться что конфиг не обрезался при копировании. Количество строк в файле — быстрая и полезная метрика, и в Linux есть несколько способов её получить.

wc -l: основной инструмент

wc (word count) считает строки, слова и символы. Флаг -l выводит только строки:

wc -l filename.txt
42 filename.txt

Если нужно только число без имени файла — передать через пайп:

wc -l < filename.txt
42

Разница важна для скриптов: первый вариант всегда добавляет имя файла в вывод, второй — только число.

Несколько файлов и итог

Подсчитать строки в нескольких файлах сразу:

wc -l file1.txt file2.txt file3.txt
  120 file1.txt
   85 file2.txt
  204 file3.txt
  409 total

wc автоматически добавляет строку total с суммой. Полезно для быстрой сводки по группе логов.

По маске — все .log файлы в директории:

wc -l /var/log/nginx/*.log

Рекурсивно по всем файлам в директории:

find /var/log -name "*.log" -exec wc -l {} +

grep -c: строки содержащие паттерн

grep -c считает не все строки, а только те которые совпадают с шаблоном:

grep -c "ERROR" /var/log/app.log

Подсчитать строки с ошибками за сегодня:

grep -c "$(date +%Y-%m-%d)" /var/log/syslog

Если нужно именно количество всех строк через grep — считать с универсальным паттерном:

grep -c "" filename.txt

Пустой шаблон совпадает с каждой строкой.

awk: подсчёт с условием

awk считает строки через встроенную переменную NR (number of records):

awk 'END {print NR}' filename.txt

Посчитать только непустые строки:

awk 'NF' filename.txt | wc -l

NF (number of fields) равен нулю для пустых строк — такие строки awk пропустит.

Посчитать строки длиннее 80 символов:

awk 'length > 80 {count++} END {print count}' filename.txt

sed: быстрый счётчик

sed с флагом -n и командой $= выводит номер последней строки — что равносильно количеству строк:

sed -n '$=' filename.txt

Компактно и быстро, особенно на больших файлах где wc может быть медленнее из-за полного прохода.

Подсчёт строк в сжатом файле

Логи часто хранятся в gzip. Читать без распаковки:

zcat /var/log/syslog.1.gz | wc -l

Для .bz2:

bzcat file.bz2 | wc -l

Количество строк в выводе команды

Подсчитать сколько процессов запущено:

ps aux | wc -l

Сколько открытых соединений на порту 80:

ss -tn | grep ':80' | wc -l

Сколько файлов в директории:

ls /var/www/html | wc -l

Нюанс: последняя строка без переноса

wc -l считает символы \n. Если файл заканчивается без символа новой строки — последняя строка не учитывается. Это важно для файлов которые генерируются программами.

Проверить есть ли перенос в конце файла:

tail -c 1 filename.txt | xxd

Если вывод пустой — файл заканчивается на \n. Если показывает символ — переноса нет и wc -l занижает результат на 1.

Шпаргалка

Задача Команда
Количество строк в файле wc -l filename
Только число (без имени) wc -l < filename
Несколько файлов с итогом wc -l file1 file2 file3
Рекурсивно по директории find /path -name "*.log" -exec wc -l {} +
Строки с совпадением grep -c "pattern" filename
Только непустые строки awk 'NF' filename | wc -l
Через awk awk 'END {print NR}' filename
Через sed sed -n '$=' filename
В сжатом gz файле zcat file.gz | wc -l
В выводе команды ps aux | wc -l

Поделиться статьей

Похожие статьи