AWK-正規表現

AWKは、正規表現の処理において非常に強力で効率的です。多くの複雑なタスクは、単純な正規表現で解決できます。コマンドラインの専門家なら誰でも、正規表現の力を知っています。

この章では、適切な例を使用して標準の正規表現について説明します。

ドット

行末文字以外の任意の1文字に一致します。たとえば、次の例は一致しますfin, fun, fan

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

上記のコードを実行すると、次の結果が得られます-

出力

fun
fin
fan

行の開始

行頭と一致します。たとえば、次の例では、patternで始まるすべての行を出力します。The

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

このコードを実行すると、次の結果が得られます-

出力

There
Their

行の終わり

行末に一致します。たとえば、次の例では、文字で終わる行を出力しますn

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

出力

このコードを実行すると、次の結果が得られます-

fun
fin
fan

文字セットに一致

複数の文字のうち1つだけを照合するために使用されます。たとえば、次の例はパターンに一致しますCall そして Tall だがしかし Ball

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

出力

このコードを実行すると、次の結果が得られます-

Call
Tall

専用セット

排他的なセットでは、カラットは角括弧内の文字のセットを無効にします。たとえば、次の例では印刷のみを行いますBall

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

このコードを実行すると、次の結果が得られます-

出力

Ball

変更

縦棒を使用すると、正規表現を論理的にOR演算できます。たとえば、次の例はBall そして Call

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

このコードを実行すると、次の結果が得られます-

出力

Call
Ball

ゼロまたは1回の発生

前の文字の0回または1回の出現に一致します。たとえば、次の例は一致しますColour と同様 Color。私たちは作ったu を使用してオプションの文字として ?

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

このコードを実行すると、次の結果が得られます-

出力

Colour
Color

ゼロ以上の発生

前の文字の0回以上の出現に一致します。たとえば、次の例は一致しますca, cat, catt, 等々。

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

このコードを実行すると、次の結果が得られます-

出力

ca
cat
catt

1つ以上の発生

前の文字の1つ以上のオカレンスと一致します。たとえば、以下の例は、1つ以上のオカレンスに一致します。2

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

上記のコードを実行すると、次の結果が得られます-

出力

22
123
234
222

グループ化

Parentheses ()グループ化と文字に使用されます| 代替に使用されます。たとえば、次の正規表現は、次のいずれかを含む行と一致しますApple Juice or Apple Cake

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

このコードを実行すると、次の結果が得られます-

出力

Apple Juice
Apple Cake