Команда wc подсчитывает характеристики текстовых потоков, а nl записывает входные данные с созданными номерами строк. Обе команды читают файлы или stdin и отправляют результаты в stdout.
Text-Fu · Урок 15
wc и nl
Научитесь считать строки, слова, байты и символы с помощью wc и нумеровать строки командой nl.
Чтение стандартного вывода wc
Без параметра вида подсчёта wc выводит число символов перевода строки, слов и байтов, а затем имя файла, если оно было указано:
$ printf 'red blue\ngreen\n' > colors.txt
$ wc colors.txt
2 3 15 colors.txt
Слева направо:
2символа перевода строки, представленные как строки.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, включая пустые?
Чтобы попрактиковаться в подсчёте и нумерации текста, выполните лабораторные работы:
- Команда wc в Linux: подсчёт текста — попрактикуйтесь считать слова, строки и символы в текстовых файлах.
- Команда nl в Linux: нумерация строк — научитесь нумеровать строки текстовых файлов командой
nl. - Подсчёт слов и сортировка — примените
wcдля подсчёта строк, слов и символов и сочетайте его с сортировкой для практического анализа текста.
Урок завершён
Вы завершили wc и nl
Теперь вы можете измерять текстовые потоки и добавлять видимые номера строк, не редактируя источник.
Интерпретируйте стандартные столбцы строк, слов и байтов в выводе
wc.Выбирайте один вид подсчёта с помощью
-l,-w,-cили-m.Отличайте число байтов от числа символов.
Нумеруйте непустые строки стандартным поведением
nl.Нумеруйте также пустые строки с помощью
nl -ba.
Сохраните прогресс
Создайте бесплатный аккаунт, чтобы сохранить этот урок и продолжить на любом устройстве.
Создать бесплатный аккаунт