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]; } }'