awk에서 정규식 중괄호 안에 변수를 사용하는 방법은 무엇입니까?

awk에서 정규식 중괄호 안에 변수를 사용하는 방법은 무엇입니까?

정규식 중괄호 안에 변수를 사용하고 싶지만
작동하지 않는 것 같습니다.

$ 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그런 다음 해당 변수를 사용하십시오.

  • 변수 뒤의 패턴은 다시 따옴표로 묶입니다.

관련 정보