主页 > 知识库 > 服务器 > Linux/BSD >

linux awk数组操作详细介绍(2)

来源:中国IT实验室 作者:佚名 发表于:2013-07-23 17:33  点击:
三、二维数组使用(多维数组使用) awk的多维数组在本质上是一维数组,更确切一点,awk在 存储 上并不支持多维数组。awk提供了逻辑上模拟二维数组的访问方式。例 如,array[2,4] = 1这样的访问是允许的。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)
  [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];
  }
  }'

有帮助
(0)
0%
没帮助
(0)
0%
  • 上一篇:linux下命令行mail发邮件方法
  • 下一篇:没有了