30.1 关联数组的下标
使用变量作为数组索引请参见范例 范例 $ cat employees Tom Jones 4424 5/12/66 543354 Mary Adams 5346 11/4/63 28765 Sally Chang 1654 7/22/54 650000 Billy Black 1683 9/23/44 336500 $ awk '{name[x++]=$2}END{for(i=0;...
View Article30.2 awk特殊for循环
当下标为字符串或非连续的数字时,不能用for循环来遍历数组。这时候就要使用特殊for循环。特殊for循环把下标作为键来查找与之关联的值。 格式 $ awk '{ for(item in arrayname){ print arrayname[item] } }' 范例 $ cat db 1 Tom Jones 2 Mary Adams 3 Sally Chang 4 Billy...
View Article30.3 用字符串作为数组下标
数组下标可以由包含单个字符或字符串的变量组成,如果是字符串,则必须用双引号引起来。 范例 $ cat datafile3 tom mary sean tom mary mary bob mary alex $ cat awk.sc /tom/{count["tom"]++} /mary/{count["mary"]++} END{print "There are " count["tom"] "...
View Article30.4 使用字段的值作为数组下标
对于awk命令,任何表达式都可以用作数组的下标。所以,也可以用字段作下标。下面的例子中的程序用于计算所有名字在第2 个字段出现的次数,并引入了一种for循环的新形式。 for(index_value in array) statement...
View Article30.5 split与delete函数
数组与split函数: awk的内置函数split能够将字符串拆分为词,然后保存在数组中。您可以指定字段分隔符,也可以就用FS的当前值。 格式 split(字符串,数组,字段分隔符) split(字符串,数组) 范例 $ awk 'BEGIN{split("3/15/2015",date,"/");\ print "The month is " date[1] " and the year is...
View Article30.6 awk多维数组
awk命令虽然没有宣称支持多维数组,却提供了定义多维数组的方法。awk定义多维数组的方法是把多个下标串成字符串,下标之间用内置变量SUBSEP的值分隔。变量SUBSEP的值是"\034",这是个不可打印的字符,极少被使用,因此不太可能被用作下标中的字符。表达式matrix[2,8]其实就是数组matrix[2 SUBSEP 8] ,转换后所得的结果为matrix["2\0348"]...
View Article30.7 处理命令行参数
ARGV awk可以从内置数组ARGV中得到命令行参数,其中包括命令awk。但所有传递给awk的选项都不在其中。ARGV数组的下标从0开始。 ARGC ARGC是一个包含命令行参数个数的内置变量。 范例 $ cat argvs # Scriptname:argvs BEGIN{ for(i=0; i<ARGC; i++){ printf("argv[%d] is...
View Article