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 line8Jak 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 line8Polecenie 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 line8Możesz wyrównać szerokość wyniku. Aby to zrobić, użyj flagi -w, jak poniżej.
nl -w2 file.txtMetoda 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 line8Alternatywnie możesz przekazać standardowe wyjście do nowego pliku, jak poniżej.
cat -n file.txt > newfile.txtMoż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 line8Metoda 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 line8Jak 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 line8Uż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.txtJeś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 line8Jeśli chcesz zwiększyć odstęp między liczbami a tekstem, uruchom:
awk '{ print FNR "\t " $0 }' file.txtMetoda 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 line8Polecenie 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 line3Metoda 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 line8Metoda 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 line8Należ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!