![변수를 인쇄하려고 하는데 awk가 전체 줄을 인쇄하는 이유는 무엇입니까?](https://linux55.com/image/89076/%EB%B3%80%EC%88%98%EB%A5%BC%20%EC%9D%B8%EC%87%84%ED%95%98%EB%A0%A4%EA%B3%A0%20%ED%95%98%EB%8A%94%EB%8D%B0%20awk%EA%B0%80%20%EC%A0%84%EC%B2%B4%20%EC%A4%84%EC%9D%84%20%EC%9D%B8%EC%87%84%ED%95%98%EB%8A%94%20%EC%9D%B4%EC%9C%A0%EB%8A%94%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
내가 입력할 때:
echo "foo bar" | gawk -v var="content" '{print $var}'
나는 결과 가 content
.foo bar
답변1
var
변수는 in 이 아닌 $var
in 과 같은 이름으로 참조됩니다 awk
. 다음을$n
참조한다n
대지: $1
첫 번째 필드, $2
두 번째... 또는 전체 레코드 n
== 0( $0
전체 레코드입니다).
반드시 문자 그대로의 숫자일 필요는 없습니다. $(1+1)
또는 를 사용할 수 있습니다 $variable
. variable
포함된 경우 첫 번째 필드가 됩니다 1
. 일반적으로 마지막 필드( 필드 수를 포함하는 특수 변수) $variable
가 사용됩니다 .$NF
NF
귀하의 예와 같이 변수에 숫자가 포함되어 있지 않으면숫자가 아님0으로 이해됩니다.
따라서 는 var="content"; print $var
와 동일 var=0; print $var
하므로 는 와 동일합니다 print $0
. 즉, 전체 레코드를 인쇄합니다.
여기서 원하는 것은 다음과 같습니다.
echo "foo bar" | gawk -v var="content" '{print var}'