awk的二维数组使用

awk的二维数组使用

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)。
如:
awk '
BEGIN{ 
ay[1,10]=5;
ay[10,2]=12;

END{
for (k in ay) {
   split(k,idx,SUBSEP); 
   print idx[1],idx[2],ay[idx[1],idx[2]];
   }
}' /dev/null
或者
awk '
BEGIN{ 
ay[1,10]=5;
ay[10,2]=12;
}
END{ 
for (k in ay) {
   print k,ay[k];
   }
}' /dev/null

你可能感兴趣的:(linux)