AWK фалшифицира многомерни масиви чрез конкатенация на индексите със знака, съдържащ се в променливата SUBSEP (0x1c). Можете да итерирате през двуизмерен масив, като използвате split
по този начин (въз основа на пример във файла info gawk
):
awk 'BEGIN { OFS=","; array[1,2]=3; array[2,3]=5; array[3,4]=8;
for (comb in array) {split(comb,sep,SUBSEP);
print sep[1], sep[2], array[sep[1],sep[2]]}}'
Изход:
2,3,5
3,4,8
1,2,3
Можете обаче да обхождате числено индексиран масив, като използвате вложени цикли for:
for (i = 1; i <= width; i++)
for (j = 1; j < = height; j++)
print array[i, j]
Друга забележителна информация от ръководството на GAWK:
За да проверите дали определена индексна последователност съществува в многомерен масив, използвайте същия оператор (in), който се използва за едномерни масиви. Запишете цялата последователност от индекси в скоби, разделени със запетаи, като ляв операнд:
(subscript1, subscript2, ...) in array
Gawk 4 добавя масиви от масиви. От този линк:
for (i in array) {
if (isarray(array[i])) {
for (j in array[i]) {
print array[i][j]
}
}
else
print array[i]
}
Вижте също Преминаване на масиви от масиви за информация относно следната функция, която обхожда произволно оразмерен масив от масиви, включително назъбени:
function walk_array(arr, name, i)
{
for (i in arr) {
if (isarray(arr[i]))
walk_array(arr[i], (name "[" i "]"))
else
printf("%s[%s] = %s\n", name, i, arr[i])
}
}
person
Dennis Williamson
schedule
17.06.2010
gawk
от v4 поддържа масиви като елементи, т.е. вложени масиви, по-гъвкави от многомерните масиви,for (i in arr2) for (j in arr2[i]) print arr2[i][j]
, вижте отговора на JJoao - person jthill   schedule 07.03.2017