Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1213491
  • 博文数量: 212
  • 博客积分: 10450
  • 博客等级: 上将
  • 技术积分: 1957
  • 用 户 组: 普通用户
  • 注册时间: 2006-02-23 09:00
文章分类

全部博文(212)

文章存档

2012年(1)

2011年(16)

2010年(11)

2009年(9)

2008年(22)

2007年(36)

2006年(117)

分类:

2006-03-02 09:25:42

   在awk中数组叫做关联数组(associative arrays),因为下标记可以是数也
可以是串。awk中的数组不必提前声明,也不必声明大小。数组元素用0或
空串来初始化,这根据上下文而定。
1) 关联数组的下标
.. 把变量用作数组索引。
举例:
$ nawk '{name[x++]=$2};END{for(i=0;i
>; print i,name}' employees
0 Jones
1 Adams
2 Chang
3 Black
解释:在数组name里的下标是一个用户自定义变量x。++显示了一个
数值型的上下文。

.. 特殊for循环
在for循环无效的情况下,即当串被用作下标或者下标不是连续的数
时,用特殊for循环来读取一个关联数组。特殊for循环把下标当作
一个键来找到它的相关的值。
格式:
{for(item in arrayname){
print arrayname[item]}}
举例:
$ nawk '/^Tom/{name[NR]=$1};\
>; END{for(i=1;i<=NR;i++) print name}' db
Tom
 
 
 
Tom
Tom
 
Tommy
$ nawk '/^Tom/{name[NR]=$1};\
>; END{for(i in name){print name}}' db
Tom
Tom
Tommy
Tom
解释:这两个例子用NR(行号)来做下标,因此匹配Tom的模式的行
不连续,数组下标不连续。如果用传统for来循环打印会在数组没有
值的地方打印空值。通过使用特殊for循环,只打印数组中有值的内
容。
 
阅读(4771) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~