awk的多維數組在本質上是一維數組,更確切一點,awk在存儲上並不支持多維數組。awk提供了邏輯上模擬二維數組的訪問方式。例 如,array[2,4] = 1這樣的訪問是容許的。awk使用一個特殊的字符串SUBSEP (\034)做爲分割字段,在上面的例子中,關聯數組array存儲的鍵值其實是2\0344。
相似一維數組的成員測試,多維數組能夠使用 if ( (i,j) in array)這樣的語法,可是下標必須放置在圓括號中。
相似一維數組的循環訪問,多維數組使用 for ( item in array )這樣的語法遍歷數組。與一維數組不一樣的是,多維數組必須使用split()函數來訪問單獨的下標份量。split ( item, subscr, SUBSEP)
[chengmo@localhost ~]$ awk 'BEGIN{、 數組
for(i=1;i<=9;i++)
{
for(j=1;j<=9;j++)
{
tarr[i,j]=i*j;
print i,"*",j,"=",tarr[i,j];
}
}
}'
1 * 1 = 1
1 * 2 = 2
1 * 3 = 3
1 * 4 = 4
1 * 5 = 5
1 * 6 = 6
……
能夠經過array[k,k2]引用得到數組內容.
方法二:
[chengmo
@localhost ~]$ awk 'BEGIN{ for(i=1;i<=9;i++) { for(j=1;j<=9;j++) { tarr[i,j]=i*j; } } for(m in tarr) { split(m,tarr2,SUBSEP); print tarr2[1],"*",tarr2[2],"=",tarr[m]; } }'