Awk-regular-expressions
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回の出現に一致します。 たとえば、次の例は Color と 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
グルーピング
括弧()*はグループ化と文字|に使用されます。は代替に使用されます。 たとえば、次の正規表現は、 *Apple JuiceまたはApple Cake を含む行に一致します。
例
[jerry]$ echo -e "Apple Juice\nApple Pie\nApple Tart\nApple Cake" | awk
'/Apple (Juice|Cake)/'
このコードを実行すると、次の結果が得られます-
出力
Apple Juice
Apple Cake