Istnieje wiele zastosowań polecenia `awk` w Linuksie. Na przykład może służyć do drukowania zawartości pliku tekstowego. Pierwszy wiersz wielu plików tekstowych zawiera nagłówek pliku, a czasami pierwszy wiersz musi zostać pominięty podczas drukowania zawartości pliku. W tym samouczku pokażemy, jak wykonać to zadanie za pomocą polecenia `awk`.
Utwórz plik tekstowy
Aby podążać za tym samouczkiem, utwórz plik tekstowy rozdzielany tabulatorami o nazwie booklist.txt o następującej treści. Ten plik zawiera listę książek wraz z odpowiadającymi im autorami. W tym samouczku pokażemy, jak wydrukować różne części tego pliku po pominięciu pierwszej linii.
Cyberbezpieczeństwo z bashem Paul Troncone, Carl Albing
Linia poleceń Kung Fu Jason Cannon
Linia poleceń Linuksa Travis Booth
Bash w łatwych krokach Mike McGrath
Unix w prostych krokach Mike McGrath
Przykład 1: Pomiń pierwszy wiersz pliku za pomocą NR i operatora „>”
Zmienna NR wskazuje liczbę rekordów w pliku. Następujące polecenie `awk` używa zmiennej NR do pominięcia pierwszego wiersza pliku. Wartość NR wynosi 1 dla pierwszego wiersza. Następujące polecenie wyświetli wiersze, dla których wartość NR jest większa niż 1.
$Kotbooklist.txt
$awk '(NR>1)'booklist.txt
Poniższe dane wyjściowe zostaną wygenerowane po uruchomieniu powyższych poleceń. Dane wyjściowe zawierają wszystkie wiersze inne niż pierwszy wiersz pliku.
Przykład 2: Pomiń pierwszy wiersz, używając NR i operatora „!=”
Następujące polecenie `awk` jest podobne do poprzedniego przykładu. Jednak operator porównania „!=” jest tutaj używany zamiast „>”.
$Kotbooklist.txt$awk 'NR!=1'booklist.txt
Poniższe dane wyjściowe zostaną wygenerowane po uruchomieniu powyższych poleceń. Dane wyjściowe pokazują wszystkie wiersze inne niż pierwszy wiersz pliku.
Przykład 3: Pomiń pierwszy wiersz pliku za pomocą instrukcji warunkowej
Następujące polecenie `awk` wypisze wiersze pliku, jeśli instrukcja if jest prawdziwa. Tutaj instrukcja if będzie prawdziwa tylko wtedy, gdy wartość NR nie będzie równa 1.
$Kotbooklist.txt$awk „{jeśli (NR!=1) {drukuj}}”booklist.txt
Poniższe dane wyjściowe zostaną wygenerowane po uruchomieniu powyższych poleceń. Dane wyjściowe obejmują wszystkie wiersze z wyjątkiem pierwszego wiersza pliku.
Przykład 4: Wydrukuj nazwy książek z pliku, ale pomiń pierwszy wiersz
W tym przykładzie użyto dwóch poleceń `awk` do wypisania wszystkich nazw książek z wyjątkiem pierwszego. Polecenie `awk` odczyta pierwszą kolumnę z pliku na podstawie separatora pól ( ) i wyśle wynik do drugiego polecenia `awk`. Drugie polecenie `awk` wyświetli żądane wyjście.
$Kotbooklist.txt$awk -F 'T' „{drukuj 1 USD}”booklist.txt| awk 'NR! = 1 druk}'
Poniższe dane wyjściowe zostaną wygenerowane po uruchomieniu powyższych poleceń. Dane wyjściowe pokazują wszystkie nazwy książek z wyjątkiem nazwy pierwszej książki.
Przykład 5: Sformatuj zawartość pliku po pominięciu pierwszej linii
Opcja „-F”, zmienna NR i funkcja printf są używane w następującym poleceniu `awk` do generowania sformatowanych danych wyjściowych po pominięciu pierwszego wiersza. Polecenie podzieli zawartość pliku na kolumny na podstawie , a printf wypisze pierwszą i drugą kolumnę, gdy wartość NR wynosi co najmniej 2.
$Kotbooklist.txt$awk -F 'T' 'NR>=2 {printf '%30s %20s ', $1, $2}'booklist.txt
Poniższe dane wyjściowe zostaną wygenerowane po uruchomieniu powyższych poleceń. Dane wyjściowe pokazują sformatowaną zawartość pliku, z wyłączeniem pierwszego wiersza pliku.
Przykład 6: Wydrukuj nazwy książek po pominięciu pierwszej linii za pomocą NR i NF
Następujące polecenie `awk` używa opcji „-F” oraz NR i NF do drukowania nazw książek po pominięciu pierwszej książki. Opcja „-F” służy do oddzielenia zawartości bazy plików na . NR służy do pomijania pierwszego wiersza, a NF służy do drukowania tylko pierwszej kolumny.
$Kotbooklist.txt$awk -F 'T' 'NR> 1 && NF = 1'booklist.txt
Poniższe dane wyjściowe zostaną wygenerowane po uruchomieniu powyższych poleceń. Dane wyjściowe obejmują wszystkie nazwy książek w pliku z wyjątkiem nazwy pierwszej książki.
Przykład 7: Wydrukuj sformatowane nazwiska autorów po pominięciu pierwszego wiersza
Następujące polecenie `awk` używa opcji „-F” i instrukcji warunkowej do wypisania nazwisk autorów po pominięciu pierwszego wiersza. Tutaj wartość NR jest używana w warunku if. Tutaj nazwa autora: zostanie wydrukowana jako pierwsza linia zamiast treści z pierwszej linii. Dla pozostałych wartości NR zostaną wydrukowane nazwiska autorów z pliku.
$Kotbooklist.txt$awk -F 'T' ' {if (NR==1) printf ' Nazwisko autora: '; else printf '%s ', $2}'booklist.txt
Poniższe dane wyjściowe zostaną wygenerowane po uruchomieniu powyższych poleceń. Dane wyjściowe zawierają tekst, Nazwisko autora: z nową linią, a wszystkie nazwiska autorów są drukowane z wyjątkiem pierwszego.
Wniosek
Pierwszy wiersz pliku można pominąć za pomocą różnych poleceń systemu Linux. Jak pokazano w tym samouczku, istnieją różne sposoby pominięcia pierwszego wiersza pliku za pomocą polecenia `awk`. Warto zauważyć, że zmienna NR polecenia `awk` może być użyta do pominięcia pierwszego wiersza dowolnego pliku.