Jazyk awk proměnné zpracovává podle kontextu: buď jako numerické hodnoty (v pohyblivé řádové čárce), nebo jako řetězce znaků. Řetězce se na numerické hodnoty převádějí podle potřeby. Potom např.
x = 1je typicky numerický přiřazovací příkaz, ale v příkazu
x = "3" + "4"se řetězce převedou na numerické hodnoty a proměnné x se přiřadí numerická hodnota 7. Řetězce, ze kterých nelze získat numerickou hodnotu, mají hodnotu 0.
Proměnná, které dříve nebyla přiřazena hodnota, má hodnotu nula. Interním proměnným awk se přiřazují hodnoty automaticky (viz dále). Proto např. program
{ s1 += $1; s2 += $2 }může k proměnné s1 přičítat. Proměnná interpretující se jako řetězec bez přiřazené hodnoty obsahuje prázdný řetězec.
END { print s1, s2 }
Potřebujeme-li se ujistit, že proměnná bude chápána jako numerická, přičteme k ní hodnotu 0. Potřebujeme-li naopak proměnnou interpretovat jako řetězec, připojme k ní prázdný řetězec, např.
b = 12 ""
I když se numerické proměnné zpracovávají a ukládají v pohyblivé řádové čárce, desetinná tečka a číslice za ní se vypisují jenom tehdy, pokud je desetinná část nenulová. Číslo se na řetězec konvertuje podle obsahu proměnné CONVFMT voláním sprintf. Řetězec se na číslo konvertuje voláním atof.