Найти в Дзене

Linux count lines

В Linux есть несколько способов подсчитать количество строк в файле или потоке данных. Ниже — основные команды и их варианты использования. Синтаксис: wc -l имя_файла Примеры: Синтаксис: awk 'END {print NR}' имя_файла Пример: awk 'END {print NR}' data.txt Вывод: 42. Как это работает: Синтаксис: sed -n '$=' имя_файла Пример: sed -n '$=' data.txt Вывод: 42. Как это работает: Синтаксис: grep -c '.*' имя_файла или grep -e '$' -c имя_файла Пример: grep -c '.*' data.txt Вывод: 42. Как это работает: Синтаксис: cat -n имя_файла | tail -n 1 Пример: cat -n data.txt | tail -n 1 Вывод: 42 последняя_строка. Как это работает: КомандаПлюсыМинусыwc -lПросто, быстро, стандартноВыводит имя файла (если не использовать <)awkГибко, можно комбинировать с другими действиямиТребует знания синтаксиса awksedЛаконично, эффективноМенее очевидно для новичковgrepУдобно для фильтрации по шаблонуИзбыточно, если нужен просто подсчётcat + tailВизуально показывает номера строкНеэффективно для больших файлов Рекомендац
Оглавление

В Linux есть несколько способов подсчитать количество строк в файле или потоке данных. Ниже — основные команды и их варианты использования.

1. wc -l (самый распространённый способ)

Синтаксис:

wc -l имя_файла

Примеры:

  • Подсчёт строк в файле data.txt:wc -l data.txt
    Вывод: 42 data.txt (42 строки, имя файла).
  • Только число (без имени файла):wc -l < data.txt
    Вывод: 42.
  • Для нескольких файлов:wc -l file1.txt file2.txt
    Вывод:10 file1.txt
    32 file2.txt
    42 total

2. awk (гибкий инструмент для обработки текста)

Синтаксис:

awk 'END {print NR}' имя_файла

Пример:

awk 'END {print NR}' data.txt

Вывод: 42.

Как это работает:

  • NR — номер текущей строки (в секции END это общее число строк).

3. sed (потоковый редактор)

Синтаксис:

sed -n '$=' имя_файла

Пример:

sed -n '$=' data.txt

Вывод: 42.

Как это работает:

  • -n — не выводить строки по умолчанию;
  • $= — вывести номер последней строки.

4. grep (поиск по шаблону + подсчёт)

Синтаксис:

grep -c '.*' имя_файла

или

grep -e '$' -c имя_файла

Пример:

grep -c '.*' data.txt

Вывод: 42.

Как это работает:

  • -c — подсчитать строки, соответствующие шаблону;
  • '.*' — любой символ (любая строка);
  • '$' — конец строки (также соответствует любой строке).

5. cat -n + tail (вывод номеров строк + последняя строка)

Синтаксис:

cat -n имя_файла | tail -n 1

Пример:

cat -n data.txt | tail -n 1

Вывод: 42 последняя_строка.

Как это работает:

  • cat -n — выводит строки с номерами;
  • tail -n 1 — показывает последнюю строку вывода.

Дополнительные возможности

  1. Подсчёт строк в выводе команды
    Используйте пайп (|):ls -l | wc -l
    Подсчитает число строк в выводе ls -l.
  2. Подсчёт строк, содержащих определённый текстgrep "ошибка" log.txt | wc -l
    Подсчитает строки с словом «ошибка» в log.txt.
  3. Подсчёт строк во всех файлах каталогаwc -l *.txt
    Посчитает строки во всех .txt-файлах текущей директории.
  4. Рекурсивный подсчёт строк в подкаталогахfind . -name "*.py" -exec wc -l {} + | awk '{total += $1} END {print total}'
    Суммирует строки во всех Python‑файлах (*.py) текущего каталога и его подкаталогов.

Сравнение методов

КомандаПлюсыМинусыwc -lПросто, быстро, стандартноВыводит имя файла (если не использовать <)awkГибко, можно комбинировать с другими действиямиТребует знания синтаксиса awksedЛаконично, эффективноМенее очевидно для новичковgrepУдобно для фильтрации по шаблонуИзбыточно, если нужен просто подсчётcat + tailВизуально показывает номера строкНеэффективно для больших файлов

Рекомендация: для простого подсчёта строк используйте wc -l — это самый быстрый и понятный способ.