정규식 중괄호 안에 변수를 사용하고 싶지만
작동하지 않는 것 같습니다.
$ 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
그런 다음 해당 변수를 사용하십시오.변수 뒤의 패턴은 다시 따옴표로 묶입니다.