在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) |