Przykład 1: Wydrukuj zakres kolumn z wyniku polecenia
Następujące polecenie wydrukuje drugą, trzecią i czwartą kolumnę z danych wyjściowych polecenia, „Ls-l „. Tutaj numery kolumn są podane wprost, ale w następnym przykładzie pokazano bardziej wydajne polecenie drukowania tego samego zakresu kolumn.
$ls -ten | awk '{ wydrukuj 2 USD, 3 USD, 4 USD }'
Poniższe dane wyjściowe są generowane przez powyższe polecenie.
Przykład 2: Wydrukuj zakres kolumn z pliku za pomocą a dla pętla
Aby podążać za tym przykładem i innymi przykładami w tym samouczku, utwórz plik tekstowy o nazwie mark.txt z następującą treścią :
ID CSE203 CSE102 CSE202
1109 78 87 79
1167 67 81 70
1190 56 61 69
1156 89 55 78
199 54 66 58
Następujące polecenie `awk` wypisze pierwsze trzy kolumny pliku marks.txt. ten dla pętla służy do drukowania wartości kolumn, a pętla obejmuje trzy kroki. ten NF zmienna wskazuje całkowitą liczbę pól lub kolumn w pliku.
$Kotmark.txt$awk '{dla(i=1;i<=NF-1;i++) printf $i' '; print ''}'mark.txt
Następujące dane wyjściowe zostaną wygenerowane przez uruchomienie polecenia. Dane wyjściowe pokazują uczniowi identyfikatory i znaki dla CSE203 oraz CSE102 .
Przykład 3: Wydrukuj zakres kolumn, definiując zmienne początkowe i końcowe
Następujące polecenie `awk` wypisze pierwsze trzy kolumny z wyjścia polecenia „ls -l” przez inicjalizację startowy oraz kończący się zmienne. Tutaj wartość startowy zmienna wynosi 1, a wartość kończący się zmienna to 3. Te zmienne są powtarzane w pętli for, aby wydrukować wartości kolumn.
$ls -ten | awk ' POCZĄTEK { pierwszy = 1; ostatni = 3 }{ dla (i = pierwszy; i
Po uruchomieniu polecenia pojawią się następujące dane wyjściowe. Dane wyjściowe pokazują pierwsze trzy wartości kolumn wyniku, „ls -l”.
Przykład 4: Wydrukuj zakres kolumn z pliku z formatowaniem
Następujące polecenie `awk` wypisze pierwsze trzy kolumny z mark.txt za pomocą printf i separator pól wyjściowych ( OFS ). W tym przypadku pętla for obejmuje trzy kroki, a trzy kolumny zostaną kolejno wydrukowane z pliku. OFS służy tutaj do dodania odstępu między kolumnami. Gdy wartość licznika pętli (i) jest równa kończący się zmienna, to generowany jest znak nowej linii ( ).
$Kotmark.txt$awk -v początek=1 -v kończyć się=3 '{ dla (i=początek; i<=end;i++) printf('%s%s',
$i,(i==koniec) ? ' ' : OFS) }'mark.txt
Poniższe dane wyjściowe zostaną wygenerowane po uruchomieniu powyższych poleceń.
Przykład 5: Wydrukuj zakres kolumn z pliku za pomocą instrukcji warunkowej
Następujące polecenie `awk` wypisze pierwszą i ostatnią kolumnę z pliku przy użyciu pętli for i instrukcji if. Tutaj pętla for zawiera cztery kroki. ten startowy oraz kończący się zmienne są używane w skrypcie do pominięcia drugiej i trzeciej kolumny z pliku przy użyciu warunku if. Zmienna OFS służy do dodawania spacji między kolumnami, a zmienna ORS służy do dodawania nowej linii ( ) po wydrukowaniu ostatniej kolumny.
$Kotmark.txt$awk -v początek=2 -v kończyć się=3 '{ dla (i=1; i<=NF;i++)
if( i>=start && i<=end) continue;
else printf('%s%s', $i,(i!=NF) ? OFS :ORS) }'mark.txt
Poniższe dane wyjściowe pojawią się po uruchomieniu powyższych poleceń. Dane wyjściowe pokazują pierwszą i ostatnią kolumnę pliku marks.txt.
Przykład 6: Wydrukuj zakres kolumn z pliku za pomocą zmiennej NF
Następujące polecenie `awk` wypisze pierwszą i ostatnią kolumnę z pliku przy użyciu zmiennej NF. Do drukowania wartości kolumn nie są używane żadne pętle ani instrukcje warunkowe. NF wskazuje liczbę pól. W marks.txt są cztery kolumny. $(NF-3) definiuje pierwszą kolumnę, a $NF oznacza ostatnią kolumnę.
$Kotmark.txt$awk '{print $(NF-3)' '$NF}'mark.txt
Poniższe dane wyjściowe są generowane przez uruchomienie powyższych poleceń. Dane wyjściowe pokazują pierwszą i ostatnią kolumnę pliku marks.txt.
Przykład 7: Wydrukuj zakres kolumn z pliku za pomocą funkcji substr() i index()
Funkcja index() zwraca pozycję, jeśli wartość drugiego argumentu istnieje w wartości pierwszego argumentu. Funkcja substr() może przyjmować trzy argumenty. Pierwszy argument to wartość ciągu, drugi to pozycja początkowa, a trzeci to długość. W poniższym poleceniu pominięto trzeci argument funkcji substr(). Ponieważ kolumna zaczyna się od $1 w poleceniu `awk`, funkcja index() zwróci $3, a polecenie wydrukuje od $3 do $4.
$Kotmark.txt$awk '{print substr($0,index($0,$3))}'mark.txt
Poniższe dane wyjściowe zostaną wygenerowane przez uruchomienie powyższych poleceń.
Przykład 8: Sekwencyjnie wypisuj zakres kolumn z pliku za pomocą printf
Następujące polecenie `awk` wypisze pierwszą, drugą i trzecią kolumnę pliku marks.txt przez ustawienie wystarczającej ilości miejsca na 10 znaków.
$Kotmark.txt$awk '//{printf '%10s %10s %10s ',$1,$3,$2 }'mark.txt
Poniższe dane wyjściowe zostaną wygenerowane przez uruchomienie powyższych poleceń.
Wniosek
Istnieją różne sposoby drukowania zakresu kolumn z danych wyjściowych polecenia lub pliku. Ten samouczek pokazuje, jak polecenie `awk` może pomóc użytkownikom Linuksa w drukowaniu treści z danych tabelarycznych.