Практические применения и расширенное использование
На этом последнем этапе мы рассмотрим некоторые практические применения и расширенное использование команды nl
в реальных сценариях.
Нумерация нескольких файлов
Команда nl
может обрабатывать несколько файлов одновременно. Создадим второй файл:
nano commands2.txt
Добавьте следующее содержимое:
Additional Linux Commands
------------------------
find - search for files
tar - archive files
ssh - secure shell connection
df - disk free space
top - display system processes
Сохраните файл и выйдите из nano. Теперь пронумеруем оба файла вместе:
nl sample.txt commands2.txt > combined_numbered.txt
Посмотрите на объединенный результат:
cat combined_numbered.txt
Вы должны увидеть, что оба файла пронумерованы последовательно:
1 Linux Commands
2 -------------
3 cat - display file contents
4 ls - list directory contents
5 cd - change directory
6 grep - search for patterns
7 chmod - change file permissions
1 Additional Linux Commands
2 ------------------------
3 find - search for files
4 tar - archive files
5 ssh - secure shell connection
6 df - disk free space
7 top - display system processes
Обратите внимание, что нумерация строк для второго файла начинается заново. Если вы хотите, чтобы нумерация была непрерывной между файлами, можно использовать параметр -i
:
nl -i 1 -n ln sample.txt commands2.txt > continuously_numbered.txt
Посмотрите на результат:
cat continuously_numbered.txt
Вы должны увидеть непрерывную нумерацию для обоих файлов:
1 Linux Commands
2 -------------
3 cat - display file contents
4 ls - list directory contents
5 cd - change directory
6 grep - search for patterns
7 chmod - change file permissions
8 Additional Linux Commands
9 ------------------------
10 find - search for files
11 tar - archive files
12 ssh - secure shell connection
13 df - disk free space
14 top - display system processes
Комбинирование с другими командами
Команда nl
может быть объединена с другими командами Linux с использованием конвейеров (pipes). Например, можно пронумеровать строки вывода команды:
ls -l /etc | nl > numbered_ls_output.txt
Посмотрите на результат:
cat numbered_ls_output.txt
Вы должны увидеть вывод команды ls -l /etc
с добавленными номерами строк.
Реальный случай использования: добавление номеров строк в лог-файл
Нумерация строк особенно полезна при анализе лог-файлов. Посмотрим, как можно использовать nl
для добавления номеров строк в логи:
## First, create a sample log file
cat > sample_log.txt << EOF
[2023-07-01 10:15:22] INFO: System startup
[2023-07-01 10:15:24] INFO: Loading configuration
[2023-07-01 10:15:25] WARNING: Config file is outdated
[2023-07-01 10:15:28] ERROR: Failed to connect to database
[2023-07-01 10:15:30] INFO: Retrying database connection
[2023-07-01 10:15:33] INFO: Database connection established
[2023-07-01 10:15:35] INFO: System ready
EOF
Теперь добавим номера строк с пользовательским форматом, включающим номер строки в квадратных скобках:
nl -s ' [Line: ' -n ln -w 2 -b a sample_log.txt | sed 's/$/]/' > numbered_log.txt
Эта команда:
- Использует пользовательский разделитель
-s ' [Line: '
- Использует числа, выровненные по левому краю без ведущих нулей
-n ln
- Устанавливает ширину в 2 символа
-w 2
- Нумерует все строки
-b a
- Использует
sed
для добавления закрывающей квадратной скобки в конце каждой строки
Посмотрите на результат:
cat numbered_log.txt
Вы должны увидеть записи лога с номерами строк в квадратных скобках:
1 [Line: [2023-07-01 10:15:22] INFO: System startup]
2 [Line: [2023-07-01 10:15:24] INFO: Loading configuration]
3 [Line: [2023-07-01 10:15:25] WARNING: Config file is outdated]
4 [Line: [2023-07-01 10:15:28] ERROR: Failed to connect to database]
5 [Line: [2023-07-01 10:15:30] INFO: Retrying database connection]
6 [Line: [2023-07-01 10:15:33] INFO: Database connection established]
7 [Line: [2023-07-01 10:15:35] INFO: System ready]
Такой формат может быть очень полезен при ссылке на конкретные записи лога в документации или обсуждениях.
Теперь вы хорошо понимаете, как использовать команду nl
для базовой и расширенной нумерации строк в Linux. Этот навык будет ценным при работе с текстовыми файлами, логами, кодом и документацией.