正規表現の中かっこ内で変数を使用したいのですが、うまく
いかないようです。
$ echo 'abcabcabc' | awk '{ sub(/(abc){2}/,"XXX"); print }'
XXXabc
# this is not a correct result.
$ echo 'abcabcabc' | awk '{ i=2; sub(/(abc){i}/,"XXX"); print }'
abcabcabc
$ echo 'abcabcabc' | awk '{ if (/(abc){3}/) print "ok" }'
ok
# this does not work correctly.
$ echo 'abcabcabc' | awk '{ i=3; if (/(abc){i}/) print "ok" }'
答え1
/.../
正規表現定数のみがサポートされます。変数を渡すには引用符を使用する必要があります。
% echo 'abcabcabc' | awk '{ i=2; sub("(abc){"i"}","XXX"); print }'
XXXabc
変数の前の正規表現パターンは引用符で囲みます。
"(abc){"i
i
次に、その変数を使用します。変数の後のパターンは、二重引用符で囲まれます。