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