변수를 인쇄하려고 하는데 awk가 전체 줄을 인쇄하는 이유는 무엇입니까?

변수를 인쇄하려고 하는데 awk가 전체 줄을 인쇄하는 이유는 무엇입니까?

내가 입력할 때:

echo "foo bar" | gawk -v var="content" '{print $var}'

나는 결과 가 content.foo bar

답변1

var변수는 in 이 아닌 $varin 과 같은 이름으로 참조됩니다 awk. 다음을$n 참조한다n 대지: $1첫 번째 필드, $2두 번째... 또는 전체 레코드 n== 0( $0전체 레코드입니다).

반드시 문자 그대로의 숫자일 필요는 없습니다. $(1+1)또는 를 사용할 수 있습니다 $variable. variable포함된 경우 첫 번째 필드가 됩니다 1. 일반적으로 마지막 필드( 필드 수를 포함하는 특수 변수) $variable가 사용됩니다 .$NFNF

귀하의 예와 같이 변수에 숫자가 포함되어 있지 않으면숫자가 아님0으로 이해됩니다.

따라서 는 var="content"; print $var와 동일 var=0; print $var하므로 는 와 동일합니다 print $0. 즉, 전체 레코드를 인쇄합니다.

여기서 원하는 것은 다음과 같습니다.

echo "foo bar" | gawk -v var="content" '{print var}'

관련 정보