Cuando escribo:
echo "foo bar" | gawk -v var="content" '{print $var}'
Espero que el resultado sea content
. ¿Por qué es foo bar
?
Respuesta1
Se hace referencia a las variables por su nombre como en var
, no $var
en awk
. $n
se refiere a la n
th campo: $1
para el primer campo, $2
para el segundo... o todo el registro para n
== 0 ( $0
es el registro completo).
No es necesario que sean números literales. Puedes usar $(1+1)
o $variable
. Si variable
contiene 1
, $variable
será el primer campo. Uno de uso común es $NF
para el último campo ( NF
es la variable especial que contiene el número de campos).
Si, como en su ejemplo, la variable no contiene un número, esono númerose entiende como 0.
Entonces var="content"; print $var
, es lo mismo que y var=0; print $var
, por lo tanto, lo mismo que print $0
, es decir, imprime el registro completo.
Lo que quieres aquí es:
echo "foo bar" | gawk -v var="content" '{print var}'