awk
Wzory i działania
Szukaj…
Wprowadzenie
awk składa się z wzorów i działań zamkniętych w nawiasy klamrowe, które należy wykonać, jeśli wzór pasuje. Najbardziej podstawowym wzorem jest pusty wzór, który pasuje do dowolnego rekordu. Najbardziej podstawową akcją jest akcja pusta, która jest równoważna { print } , co z kolei jest równoważne { print $0 } . Jeśli zarówno wzorzec, jak i akcja są puste, awk po prostu nic nie zrobi.
Poniższy program po prostu powtórzy swoje wejście, na przykład:
awk '{ print }' /etc/passwd
Ponieważ { print } jest domyślną akcją, a ponieważ prawdziwa wartość pasuje do dowolnego rekordu, program ten można zapisać ponownie:
awk '1' /etc/passwd
Najpopularniejszym typem wzorca jest prawdopodobnie wyrażenie regularne ujęte w ukośniki. Następujący program wydrukuje wszystkie rekordy, które zawierają co najmniej dwa kolejne wystąpienia litery o , na przykład:
awk '/oo+/ { print }' /etc/passwd
Można jednak użyć dowolnych wyrażeń jako wzorców. Poniższy program wypisuje nazwy (pole pierwsze) użytkowników w grupie zero (pole czwarte), na przykład:
awk -F: '$4 == 0 { print $1 }' /etc/passwd
Zamiast dokładnie dopasowywać, możesz także dopasować do wyrażenia regularnego. Poniższy program wypisuje nazwy wszystkich użytkowników w grupie z co najmniej jednym zerem w identyfikatorze grupy:
awk -F: '$4 ~ /0/ { print $1 }' /etc/passwd
Filtruj linie według długości
Ten wzór pozwala filtrować linie w zależności od ich długości
$cat file
AAAAA
BBBB
CCCC
DDDD
EEEE
$awk 'length($0) > 4 { print $0 }' file
AAAAA
$
W każdym razie wzorzec pozwoli na wykonanie następnego bloku kodu, a ponieważ domyślną akcją dla AWK jest wydrukowanie bieżącego wiersza {print} , zobaczymy ten sam wynik podczas wykonywania tego:
$awk 'length($0) > 4 ' file
AAAAA