AWK no es el shell, y tampoco es Perl.
Antes que nada, las variables en AWK se referencian utilizando solamente el nombre, no se coloca $ en frente a las palabras para referirse a estas como una variable - si deseas acceder a una variable llamada «nombre», simplemente te deberás referir a ésta como «nombre» (al igual que en C)
awk '{var="foo";print var}'
AWK es como C (no el shell), no expande las variables dentro de los strings literales. No podría aunque quisiera, dado que no hay forma para distinguir entre variables y palabras en una string literal. Por tanto "Hola nombre" es un string literal, más allá de si «nombre» es o no una variable en el script de AWK. Para formar nuevos strings desde strings literales y variables, es posible usar el operador de concatenación, el cual desafortunadamente resulta ser cualquier cantidad de espacios en blanco. Ejemplo:
# muestra la concatenación de un string y una variable print "hola " nombre; # concatena, asigna a «newstr» y lo muestra newstr = "hola " nombre; print newstr; # print también reconoce la «,» como un operador "concatenar con # separador", usando la variable ORS. # Así que asumiendo que ORS es " ", lo siguiente es equivalente al # ejemplo previo: print "hola", nombre;