Ten rozdział opisuje kilka przydatnych poleceń AWK i ich odpowiednie przykłady. Rozważmy oznaczenie pliku tekstowego.txt do przetworzenia z następującą zawartością −
1) Amit Physics 802) Rahul Maths 903) Shyam Biology 874) Kedar English 855) Hari History 89
Drukowanie kolumny lub pola
możesz polecić AWK wydrukować tylko niektóre kolumny z pola wejściowego., Poniższy przykład pokazuje to –
przykład
$ awk '{print $3 "\t" $4}' marks.txt
Po wykonaniu tego kodu otrzymujesz następujący wynik −
wyjście
Physics 80Maths 90Biology 87English 85History 89
w znacznikach pliku.txt, Trzecia kolumna zawiera nazwę tematu, a Czwarta kolumna zawiera znaki uzyskane w danym temacie. Wydrukujmy te dwie kolumny używając polecenia AWK print. W powyższym przykładzie, $3 i $ 4 reprezentują odpowiednio trzecie i czwarte pola z rekordu wejściowego.
drukowanie wszystkich linii
domyślnie AWK drukuje wszystkie linie pasujące do wzorca.,
przykład
$ awk '/a/ {print $0}' marks.txt
Po wykonaniu tego kodu otrzymujemy następujący wynik −
wyjście
2) Rahul Maths 903) Shyam Biology 874) Kedar English 855) Hari History 89
w powyższym przykładzie szukamy wzorca formularza A. Gdy dopasowanie wzorca powiedzie się, wykonujemy polecenie z bloku ciała. W przypadku braku body block – wykonywana jest domyślna akcja polegająca na wydrukowaniu rekordu. Dlatego poniższe polecenie generuje ten sam wynik −
przykład
$ awk '/a/' marks.txt
Drukowanie kolumn według wzorca
gdy dopasowanie wzorca się powiedzie, AWK domyślnie wypisuje cały rekord., Ale możesz polecić AWK drukowanie tylko niektórych pól. Na przykład poniższy przykład wyświetla trzecie i czwarte pole, gdy dopasowanie wzorca się powiedzie.
przykład
$ awk '/a/ {print $3 "\t" $4}' marks.txt
Po wykonaniu tego kodu otrzymujesz następujący wynik −
wyjście
Maths 90Biology 87English 85History 89
Drukowanie kolumn w dowolnej kolejności
możesz drukować kolumny w dowolnej kolejności. Na przykład poniższy przykład wyświetla czwartą kolumnę, a następnie trzecią kolumnę.,
przykład
$ awk '/a/ {print $4 "\t" $3}' marks.txt
Po wykonaniu powyższego kodu otrzymujesz następujący wynik −
wyjście
90 Maths87 Biology85 English89 History
zliczanie i drukowanie dopasowanego wzorca
zobaczmy przykład, w którym możesz policzyć i wydrukować liczbę linii, dla których dopasowanie wzorca się powiodło.
przykład
$ awk '/a/{++cnt} END {print "Count = ", cnt}' marks.txt
podczas wykonywania tego kodu otrzymujemy następujący wynik −
wyjście
Count = 4
w tym przykładzie zwiększamy wartość counter, gdy dopasowanie wzorca powiedzie się i drukujemy tę wartość w bloku końcowym., Zauważ, że w przeciwieństwie do innych języków programowania, nie ma potrzeby deklarowania zmiennej przed jej użyciem.
Drukowanie linii z więcej niż 18 znakami
Drukuj tylko te linie, które zawierają więcej niż 18 znaków.
przykład
$ awk 'length($0) > 18' marks.txt
Po wykonaniu tego kodu otrzymujesz następujący wynik −
wyjście
3) Shyam Biology 874) Kedar English 85
AWK udostępnia wbudowaną funkcję length, która zwraca długość łańcucha. Zmienna $0 przechowuje całą linię I w przypadku braku body Blocka, wykonywana jest domyślna akcja, tzn. akcja print., W związku z tym, jeśli linia ma więcej niż 18 znaków, to wynik porównania jest true i linia zostanie wydrukowana.