Pole (arrays) se v awk předem nedeklarují. Jako příklad použití pole uveďme
{ x[NR] = $0 }Tímto programem načteme celý vstup do jednorozměrného pole a zpracujeme jej až v akci náležející speciálnímu vzorku END.
Prvky pole můžeme indexovat také nenumerickými hodnotami, např. řetězci. Ukažme si opět příklad použití
/modra/ { x["modra"]++ } /cervena/ { x["cervena"]++ } END { print x["modra"], x["cervena"] }
Pole v awk mohou být obecně n-rozměrná. Jejich prvky se totiž ukládají tak, jak je tomu u asociativních pamětí. S prvkem je uložen i jeho index. V případě více prvkových položek se jednotlivé indexy od sebe oddělují oddělovačem (tuto hodnotu lze změnit proměnnou SUBSEP, viz dále). Potom např.
do paměti uloží index ve tvaru A\034B\034C. V příkazu for můžeme použít zvláštní operátor in následovně:i = "A"; j = "B"; k = "C" x[i,j,k] = "hello, world\n"
for (proměnná in pole) ...Operátor in v příkazu for zajistí, že proměnné se budou postupně přiřazovat všechny prvky pole. Prvky jsou přiřazovány obecně v náhodném pořadí. Pokud obsah proměnné změníme nebo pokud současně zpřístupňujeme i jiné prvky pole, nastane zřejmě chaos. Je-li pole vícerozměrné, můžeme pro uložení všech indexů (jako řetězce) použít jednu proměnnou.
Operátor in můžeme použít i v příkazech if a while ke zjištění, zda element určitého indexu se v poli nachází. Můžeme napsat
if (hodnota in pole) print pole[hodnota]V případě vícerozměrných položek používáme zápis např.
if (("A","B","C") in x)
print x["A","B","C"]
Prvky pole rušíme příkazem delete např. následovně:
delete x["A","B","C"]