Поиск по сайту:

Как добавить номера строк в текстовые файлы в Linux

Вы когда-нибудь задумывались, как добавить номера строк в стандартный вывод текстовых файлов? В этом кратком руководстве объясняется, как добавлять номера строк в данный текстовый файл. Существует несколько способов добавления номеров строк в файл. Здесь я рассмотрел 6 различных способов сделать это. Я буду продолжать добавлять новые методы, если столкнусь с ними в будущем. Лучше добавьте это руководство в закладки и зайдите позже, чтобы посмотреть, есть ли какие-то дополнения.

Способ 1 — использование команды «nl»

Команда «nl» предназначена для добавления номеров строк в файл. Он записывает данный файл в стандартный вывод с добавлением номеров строк. У меня есть файл с именем file.txt со следующим содержимым.

$ cat file.txt 
This is line1
This is line2
This is line3

This is line5


This is line8

Как вы видите в приведенном выше выводе, файл содержит 8 строк, три из которых пустые. Добавим номера строк.

Для этого запустите:

 $ nl file.txt
 1 This is line1
 2 This is line2
 3 This is line3
 
 4 This is line5
 
 
 5 This is line8

Команда nl не учитывает пустые строки. Он добавит числа только в непустые строки. Если вы хотите пронумеровать все строки, включая пустые, используйте флаг -b, как показано ниже.

 $ nl -b a file.txt 
 1 This is line1
 2 This is line2
 3 This is line3
 4 
 5 This is line5
 6 
 7 
 8 This is line8

Кроме того, вы можете добавить символ/специальный символ после цифр. Например, чтобы добавить точку (.) после чисел, выполните:

 $ nl -s "." file.txt 
 1.This is line1
 2.This is line2
 3.This is line3
 
 4.This is line5
 
 
 5.This is line8

Возможно, вы захотите выровнять ширину вывода. Для этого используйте флаг -w, как показано ниже.

nl -w2 file.txt

Способ 2 — использование команды «кошка»

Команда cat используется для отображения содержимого файла. Если вы хотите добавить числа к выводу файла, используйте флаг -n, как показано ниже.

 $ cat -n file.txt 
 1 This is line1
 2 This is line2
 3 This is line3
 4 
 5 This is line5
 6 
 7 
 8 This is line8

Альтернативно вы можете передать стандартный вывод в новый файл, как показано ниже.

cat -n file.txt > newfile.txt

Вы также можете избавиться от повторяющихся пустых строк.

 $ cat -s -n file.txt 
 1 This is line1
 2 This is line2
 3 This is line3
 4 
 5 This is line5
 6 
 7 This is line8

Способ 3 — использование команды «awk»

Чтобы добавить номера строк в выходные данные файла с помощью команды awk, выполните:

$ awk 'BEGIN{i=1} /.*/{printf "%d.% s\n",i,$0; i++}' file.txt 
1.This is line1
2.This is line2
3.This is line3
4.
5.This is line5
6.
7.
8.This is line8

Как вы могли заметить, я присвоил стартовый номер 1 в параметре BEGIN. Вы можете назначить любой другой стартовый номер по вашему выбору, например 5, как показано ниже.

$ awk 'BEGIN{i=5} /.*/{printf "%d.% s\n",i,$0; i++}' file.txt 
5.This is line1
6.This is line2
7.This is line3
8.
9.This is line5
10.
11.
12.This is line8

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

awk 'BEGIN{i=0} {if($0 !~ /^$/) {printf ("%d.%s \n",i,$0); i++} else { print $0} } ' file.txt

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

$ awk '{ print FNR " " $0 }' file.txt 
1 This is line1
2 This is line2
3 This is line3
4 
5 This is line5
6 
7 
8 This is line8

Если вы хотите увеличить пространство между числами и текстом, запустите:

awk '{ print FNR "\t " $0 }' file.txt

Способ 4. Использование команды «sed»

Чтобы добавить номера строк в стандартный вывод файла с помощью команды sed, выполните:

$ sed '/./=' file.txt | sed '/./N; s/\n/ /'
1 This is line1
2 This is line2
3 This is line3

5 This is line5


8 This is line8

У команды sed есть замечательная функция, которая мне нравится больше всего. Мы можем отобразить N-ю строку из файла. Например, чтобы отобразить третью строку файла, выполните:

sed -n 3p file.txt 
This is line3

Способ 5 — использование команды «меньше»

Чтобы указать номер строки в стандартном выводе файла с помощью команды less, выполните:

 $ less -N file.txt 
 1 This is line1
 2 This is line2
 3 This is line3
 4 
 5 This is line5
 6 
 7 
 8 This is line8

Способ 6. Использование команды grep

Команду grep можно использовать для поиска строки, содержащей определенную строку. Если вы хотите добавить номера строк к строке с определенной буквой, например line, выполните:

$ grep -n "line" file.txt 
1:This is line1
2:This is line2
3:This is line3
5:This is line5
8:This is line8

Обратите внимание, что эта команда добавит числа только к строкам, содержащим строку поиска. Все остальное в данном файле будет опущено.

И это все. Более подробную информацию о вышеуказанных командах можно найти на страницах руководства. Теперь вы знаете различные способы добавления номеров строк в текстовые файлы. Надеюсь, вы найдете это полезным. Впереди еще больше хороших вещей. Следите за обновлениями!

Ваше здоровье!

Статьи по данной тематике