【转载】awk数组
时间:2006-03-02 来源:qbqqq
在awk中数组叫做关联数组(associative arrays),因为下标记可以是数也
可以是串。awk中的数组不必提前声明,也不必声明大小。数组元素用0或
空串来初始化,这根据上下文而定。 1) 关联数组的下标
.. 把变量用作数组索引。
举例: $ nawk '{name[x++]=$2};END{for(i=0;i<NR;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循环,只打印数组中有值的内
容。
可以是串。awk中的数组不必提前声明,也不必声明大小。数组元素用0或
空串来初始化,这根据上下文而定。 1) 关联数组的下标
.. 把变量用作数组索引。
举例: $ nawk '{name[x++]=$2};END{for(i=0;i<NR;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循环,只打印数组中有值的内
容。
相关阅读 更多 +