AWK - wyrażenia regularne

AWK jest bardzo potężnym i wydajnym narzędziem do obsługi wyrażeń regularnych. Wiele złożonych zadań można rozwiązać za pomocą prostych wyrażeń regularnych. Każdy ekspert od wiersza poleceń zna moc wyrażeń regularnych.

W tym rozdziale omówiono standardowe wyrażenia regularne wraz z odpowiednimi przykładami.

Kropka

Dopasowuje każdy pojedynczy znak z wyjątkiem znaku końca wiersza. Na przykład pasuje następujący przykładfin, fun, fan itp.

Przykład

[jerry]$ echo -e "cat\nbat\nfun\nfin\nfan" | awk '/f.n/'

Wykonując powyższy kod, otrzymasz następujący wynik -

Wynik

fun
fin
fan

Początek linii

Pasuje do początku linii. Na przykład poniższy przykład wyświetla wszystkie linie zaczynające się od wzorcaThe.

Przykład

[jerry]$ echo -e "This\nThat\nThere\nTheir\nthese" | awk '/^The/'

Wykonując ten kod, otrzymasz następujący wynik -

Wynik

There
Their

Koniec linii

Pasuje do końca linii. Na przykład poniższy przykład drukuje wiersze kończące się literąn.

Przykład

[jerry]$ echo -e "knife\nknow\nfun\nfin\nfan\nnine" | awk '/n$/'

Wynik

Wykonując ten kod, otrzymasz następujący wynik -

fun
fin
fan

Dopasuj zestaw znaków

Służy do dopasowania tylko jednego z kilku znaków. Na przykład poniższy przykład pasuje do wzorcaCall i Tall ale nie Ball.

Przykład

[jerry]$ echo -e "Call\nTall\nBall" | awk '/[CT]all/'

Wynik

Wykonując ten kod, otrzymasz następujący wynik -

Call
Tall

Ekskluzywny zestaw

W zestawie ekskluzywnym karat neguje zestaw znaków w nawiasach kwadratowych. Na przykład poniższy przykład drukuje tylkoBall.

Przykład

[jerry]$ echo -e "Call\nTall\nBall" | awk '/[^CT]all/'

Wykonując ten kod, otrzymasz następujący wynik -

Wynik

Ball

Zmiana

Pionowa kreska umożliwia logiczny OR na wyrażeniach regularnych. Na przykład następujący przykład drukujeBall i Call.

Przykład

[jerry]$ echo -e "Call\nTall\nBall\nSmall\nShall" | awk '/Call|Ball/'

Wykonując ten kod, otrzymasz następujący wynik -

Wynik

Call
Ball

Zero lub jedno wystąpienie

Dopasowuje zero lub jedno wystąpienie poprzedniego znaku. Na przykład pasuje następujący przykładColour jak również Color. Zrobiliśmyu jako znak opcjonalny przy użyciu ?.

Przykład

[jerry]$ echo -e "Colour\nColor" | awk '/Colou?r/'

Wykonując ten kod, otrzymasz następujący wynik -

Wynik

Colour
Color

Zero lub więcej wystąpień

Dopasowuje zero lub więcej wystąpień poprzedniego znaku. Na przykład pasuje następujący przykładca, cat, catt, i tak dalej.

Przykład

[jerry]$ echo -e "ca\ncat\ncatt" | awk '/cat*/'

Wykonując ten kod, otrzymasz następujący wynik -

Wynik

ca
cat
catt

Jedno lub więcej wystąpień

Dopasowuje jedno lub więcej wystąpień poprzedzającego znaku. Na przykład poniższy przykład dopasowuje jedno lub więcej wystąpień2.

Przykład

[jerry]$ echo -e "111\n22\n123\n234\n456\n222"  | awk '/2+/'

Wykonując powyższy kod, otrzymasz następujący wynik -

Wynik

22
123
234
222

Grupowanie

Parentheses ()służą do grupowania i znaku | jest używany do alternatyw. Na przykład następujące wyrażenie regularne dopasowuje wiersze zawierające alboApple Juice or Apple Cake.

Przykład

[jerry]$ echo -e "Apple Juice\nApple Pie\nApple Tart\nApple Cake" | awk 
   '/Apple (Juice|Cake)/'

Wykonując ten kod, otrzymasz następujący wynik -

Wynik

Apple Juice
Apple Cake