Awk-regular-expressions

提供:Dev Guides
移動先:案内検索

AWK-正規表現

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

この章では、標準の正規表現と適切な例を取り上げます。

Dot

行末文字を除く任意の単一文字に一致します。 たとえば、次の例は fin、fun、fan などに一致します。

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

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

出力

fun
fin
fan

行頭

行頭と一致します。 たとえば、次の例は、パターン 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つの発生

直前の文字のゼロまたは1回の出現に一致します。 たとえば、次の例は ColorColor に一致します。 ?*を使用して、オプション文字として *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

グルーピング

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

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

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

出力

Apple Juice
Apple Cake