Wyszukiwanie w witrynie

Jak dodać numery linii do plików tekstowych w systemie Linux


Czy zastanawiałeś się kiedyś, jak dodać numery linii do standardowego wyjścia plików tekstowych? W tym krótkim przewodniku wyjaśniono, jak dodać numery linii do danego pliku tekstowego. Istnieje wiele sposobów dodawania numerów linii do pliku. Tutaj opisałem 6 różnych metod, aby to zrobić. Będę dodawać więcej metod, jeśli natknę się na jakieś w przyszłości. Lepiej dodaj ten przewodnik do zakładek i wróć później, aby sprawdzić, czy są jakieś dodatki.

Metoda 1 — użycie polecenia „nl”.

Komenda "nl" przeznaczona jest do dodawania numerów linii do pliku. Wypisuje podany plik na standardowe wyjście z dodanymi numerami linii. Mam plik o nazwie file.txt z następującą zawartością.

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

This is line5


This is line8

Jak widać na powyższym wyjściu, plik ma 8 linii i trzy puste linie. Dodajmy numery linii.

Aby to zrobić, uruchom:

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

Polecenie nl nie będzie uwzględniać pustych linii. Doda liczby tylko do niepustych linii. Jeśli chcesz ponumerować wszystkie linie łącznie z pustymi liniami, użyj flagi -b jak poniżej.

 $ 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

Możesz także dodać symbol/znaki specjalne po liczbach. Na przykład, aby dodać kropkę (.) po liczbach, wykonaj:

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

Możesz wyrównać szerokość wyniku. Aby to zrobić, użyj flagi -w, jak poniżej.

nl -w2 file.txt

Metoda 2 — użycie polecenia „cat”.

Polecenie cat służy do wyświetlania zawartości pliku. Jeśli chcesz dodać liczby do wyniku pliku, użyj flagi -n jak poniżej.

 $ 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

Alternatywnie możesz przekazać standardowe wyjście do nowego pliku, jak poniżej.

cat -n file.txt > newfile.txt

Możesz także pozbyć się powtarzających się pustych linii.

 $ 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

Metoda 3 — użycie polecenia „awk”.

Aby dodać numery linii do wyniku pliku za pomocą polecenia awk, uruchom:

$ 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

Jak można zauważyć, w parametrze BEGIN przypisałem numer początkowy jako 1. Możesz przypisać dowolny inny wybrany numer startowy, na przykład 5, jak pokazano poniżej.

$ 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

Użyj następującego polecenia, jeśli nie chcesz brać pod uwagę pustych linii:

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

Jeśli uważasz, że powyższe polecenia są nieco trudne do zapamiętania, użyj zamiast tego poniższego polecenia.

$ 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

Jeśli chcesz zwiększyć odstęp między liczbami a tekstem, uruchom:

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

Metoda 4 — użycie polecenia „sed”.

Aby dodać numery linii do standardowego wyjścia pliku za pomocą polecenia sed, uruchom:

$ 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

Polecenie sed ma fajną funkcję, która podoba mi się najbardziej. Możemy wyświetlić N-tą linię z pliku. Na przykład, aby wyświetlić trzecią linię pliku, uruchom:

sed -n 3p file.txt 
This is line3

Metoda 5 — użycie polecenia „mniej”.

Aby dodać numer do standardowego wyjścia pliku za pomocą polecenia less, uruchom:

 $ 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

Metoda 6 — użycie polecenia „grep”.

Za pomocą polecenie grep można wyszukać linię zawierającą określoną linię. Jeśli chcesz dodać numery linii do linii zawierającej określoną literę, na przykład linię, uruchom:

$ 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

Należy pamiętać, że to polecenie doda liczby tylko do linii zawierających wyszukiwany ciąg. Wszystko inne w danym pliku zostanie pominięte.

I to wszystko. Więcej szczegółów na temat powyższych poleceń można znaleźć na stronach podręcznika man. Znasz już różne metody dodawania numerów linii do plików tekstowych. Mam nadzieję, że uznasz to za przydatne. Wkrótce więcej dobrych rzeczy. Czekać na dalsze informacje!

Dzięki!

Powiązane artykuły