awk 에서 패턴 지정자 /... / 안에다가 변수를 쓸 수는 없나요?

maniac의 이미지

예를들어,

awk -v ii=$i -v jj=$j 'BEGIN{count=0;} $2 ~ /jj/ {if($1==ii)count++} END{print count}' $inputfile

와 같은 식으로 하고 싶은데.. 도통 변수 jj를 인식 시킬 수가 없네요...(일반 스트링으로만 인식하는군요;;)
도와 주세요.. ;ㅅ;

cinsk의 이미지

"/foo/"처럼 쓰는 것은 constant regular expression이라고 합니다.
즉, /.../ 사이에 변수를 쓸 수 없습니다. 동적으로 만든 regular expression을 쓰는 경우에는 ~ 연산자나 !~ 연산자를 쓰면 됩니다. 이 때 연산자의 오른쪽에 /.../를 쓸 필요가 없습니다.

즉 "$2 ~ /jj/" 대신에 "$2 ~ jj"를 써 보기 바랍니다.

--
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
Korean Ver: http://www.cinsk.org/cfaqs/

maniac의 이미지

덕분에 많은 도움이 되었습니다.
그냥 쓰면 되는것을 모르고 있었네요..
감사합니다~!! ^^*