As variáveis são referenciadas por nome como em var
, não $var
in awk
. $n
refere-se ao campo n
th : $1
para o primeiro campo, $2
para o segundo ... ou o registro inteiro para n
== 0 ( $0
é o registro completo).
Esses não precisam ser números literais. Você pode usar $(1+1)
ou $variable
. Se variable
contiver 1
, então $variable
será o primeiro campo. Um comumente usado é $NF
para o último campo ( NF
é a variável especial que contém o número de campos).
Se, como no seu exemplo, a variável não contiver um número, esse non-number será entendido como 0.
Portanto, var="content"; print $var
é igual a var=0; print $var
e, portanto, igual a print $0
, ou seja, imprime o registro inteiro.
O que você quer aqui é:
echo "foo bar" | gawk -v var="content" '{print var}'