wc и nl
100%

Text-Fu · Урок 15

wc и nl

Научитесь считать строки, слова, байты и символы с помощью wc и нумеровать строки командой nl.

Команда wc подсчитывает характеристики текстовых потоков, а nl записывает входные данные с созданными номерами строк. Обе команды читают файлы или stdin и отправляют результаты в stdout.

Чтение стандартного вывода wc

Без параметра вида подсчёта wc выводит число символов перевода строки, слов и байтов, а затем имя файла, если оно было указано:

$ printf 'red blue\ngreen\n' > colors.txt
$ wc colors.txt
 2  3 15 colors.txt

Слева направо:

  1. 2 символа перевода строки, представленные как строки.
  2. 3 слова, разделённые пробельными символами.
  3. 15 байтов в этом примере ASCII.

Последняя текстовая строка без завершающего перевода строки не учитывается wc -l, поскольку этот параметр считает символы перевода строки, а не визуально воспринимаемые строки.

Что обозначают первые три числа в стандартном выводе wc file.txt?

Запрос одного значения

Выберите только нужное измерение:

  • -l: число символов перевода строки.
  • -w: число слов.
  • -c: число байтов.
  • -m: число символов согласно текущей локали.

Например:

$ wc -w colors.txt
3 colors.txt

Для текста ASCII число байтов совпадает с числом символов, но в многобайтовых кодировках вроде UTF-8 они могут различаться. При использовании stdin без файлового операнда wc обычно не выводит метку имени файла:

$ printf 'one two\n' | wc -w
2

Какая команда выводит только число слов в essay.txt?

Какой параметр просит wc считать символы, а не байты, в текущей локали?

Если указано несколько файлов, wc выводит результат для каждого и строку total. GNU wc -L сообщает максимальную отображаемую ширину входной строки.

Нумерация непустых строк с помощью nl

По умолчанию nl нумерует непустые строки логического тела входных данных. Предположим, notes.txt содержит пустую вторую строку:

alpha

beta

Пустая строка сохраняется, но не получает номера:

$ nl notes.txt
     1	alpha

     2	beta

nl записывает нумерованный вывод и не изменяет notes.txt.

Как nl notes.txt по умолчанию обрабатывает пустые строки тела?

Нумерация каждой строки

Используйте -ba, чтобы выбрать стиль тела a, нумерующий все строки:

$ nl -ba notes.txt
     1	alpha
     2
     3	beta

Другие параметры управляют форматированием. Например, -w 3 задаёт ширину поля номера, а -s ': ' изменяет разделитель после него.

Какая команда нумерует каждую строку тела notes.txt, включая пустые?

Чтобы попрактиковаться в подсчёте и нумерации текста, выполните лабораторные работы:

  1. Команда wc в Linux: подсчёт текста — попрактикуйтесь считать слова, строки и символы в текстовых файлах.
  2. Команда nl в Linux: нумерация строк — научитесь нумеровать строки текстовых файлов командой nl.
  3. Подсчёт слов и сортировка — примените wc для подсчёта строк, слов и символов и сочетайте его с сортировкой для практического анализа текста.

Урок завершён

Вы завершили wc и nl

Теперь вы можете измерять текстовые потоки и добавлять видимые номера строк, не редактируя источник.

  • Интерпретируйте стандартные столбцы строк, слов и байтов в выводе wc.

  • Выбирайте один вид подсчёта с помощью -l, -w, -c или -m.

  • Отличайте число байтов от числа символов.

  • Нумеруйте непустые строки стандартным поведением nl.

  • Нумеруйте также пустые строки с помощью nl -ba.

Сохраните прогресс

Создайте бесплатный аккаунт, чтобы сохранить этот урок и продолжить на любом устройстве.

Создать бесплатный аккаунт
Следующий Урок
Назад к Text-Fu