Linux предоставляет различные команды для форматирования и редактирования текста, и одна из особенно полезных команд — это команда nl . Этот инструмент позволяет добавлять номера строк к каждой строке текстового файла или входных данных, что облегчает чтение и организацию содержимого.
Что делает команда nl ?
Команда nl отображает содержимое текстового файла с номера строк добавляются к непустым строкам по умолчанию. Это особенно полезно при работе со скриптами или просмотре больших файлов, где отслеживание номеров строк критически важно для отладки или редактирования.
Пример: использование команды nl
Предположим, у вас есть файл с именем hello-world.sh содержащий следующий скрипт:
#!/bin/bash
#
#This is a demo script that greets the world
#Author: Jose Navarro Varela
#Usage: ./hello-world.sh
clear
echo hello world
exit 0
Чтобы отобразить файл с номерами строк, просто выполните:
nl hello-world.sh
Вывод будет выглядеть так:
1 #!/bin/bash
2 #
3 #This is a demo script that greets the world
4 #Author: Jose Navarro Varela
5 #Usage: ./hello-world.sh
6 clear
7 echo hello world
8 exit 0
По умолчанию команда nl нумерует только непустые строки.
Нумерация всех строк (включая пустые)
Чтобы включить пустые строки в нумерацию, используйте опцию -b a :
nl -b a hello-world.sh
Вывод будет выглядеть так:
1 #!/bin/bash
2 #
3 #This is a demo script that greets the world
4 #Author: Jose Navarro Varela
5 #Usage: ./hello-world.sh
6
7 clear
8 echo hello world
9 exit 0
Добавление пользовательского разделителя
Команда nl позволяет настроить разделитель между номерами строк и текстом с помощью опции -s . Например, чтобы добавить ... в качестве разделителя:
nl -s "..." hello-world.sh
Вывод будет выглядеть так:
1...#!/bin/bash
2...#
3...#This is a demo script that greets the world
4...#Author: Jose Navarro Varela
5...#Usage: ./hello-world.sh
6...
7...clear
8...echo hello world
9...exit 0
Дополнительные опции
Команда nl предлагает дополнительные опции для настройки, например:
-w: Задаёт ширину поля номера строки.-n: Определяет формат нумерации (по правому краю, по левому краю или с заполнением нулями).
Вы можете изучить все доступные опции, обратившись к странице руководства с помощью:
man nl
Распространённые сценарии использования команды nl
Команда nl широко используется в различных ситуациях. Ниже приведены некоторые из наиболее распространённых сценариев:
1. Отладка shell-скриптов
При отладке shell-скрипта вам может потребоваться ссылаться на конкретные строки, в которых возникают ошибки. Использование команды nl для добавления номеров строк облегчает поиск проблемных строк.
Пример:
nl my-script.sh
2. Подготовка документации или рецензирования кода
Когда вы делитесь скриптами или фрагментами кода для рецензирования, добавление номеров строк делает содержимое более читаемым и удобным для ссылок во время обсуждений.
Пример:
nl config.conf > numbered-config.conf
3. Просмотр больших текстовых файлов
При работе с большими файлами журналов, конфигурации или данных добавление номеров строк помогает ориентироваться и ссылаться на конкретные разделы.
Пример:
nl /var/log/syslog
4. Сравнение файлов с номерами строк
Добавление номеров строк к файлам перед их сравнением облегчает выявление различий.
Пример:
nl file1.txt > numbered-file1.txt
nl file2.txt > numbered-file2.txt
diff numbered-file1.txt numbered-file2.txt
5. Форматирование вывода для отчётов
Команда nl можно использовать для форматирования текстовых файлов для отчётов или презентаций, где для ясности требуются пронумерованные строки.
Пример:
nl report.txt > numbered-report.txt
6. Просмотр скриптов с номерами пустых строк
Иногда скрипты содержат пустые строки, важные для читаемости. Вы можете использовать опцию -b a чтобы пронумеровать все строки, включая пустые.
Пример:
nl -b a script.sh
7. Настройка номеров строк для конкретных форматов
При представлении пронумерованных текстовых файлов вам могут понадобиться пользовательские разделители или форматирование.
Пример:
nl -s " -> " textfile.txt
Зачем использовать команду nl ?
Команда nl — это простой, но мощный инструмент для:
- Отладка скриптов путём определения конкретных строк.
- Добавление номеров строк в текстовые файлы для более удобной навигации.
- Подготовка отформатированного вывода для документации или совместного использования.