1.awk
中的数组是一维数组,使用时不用事先声明。第一次使用数组元素时,会自动生成数组元素的值,默认为空字符串""
和数字0
。请参考以下例子:
Nan:~ nanxiao$ awk 'END {if (arr["A"] == "") print "Empty string"}'
Empty string
Nan:~ nanxiao$ awk 'END {if (arr["A"] == 0) print "Number 0"}'
Number 0
2.awk
中的数组是关联数组(associative array
),数组下标为字符串。
3.使用for
循环可遍历数组下标:
其中访问数组下标的顺序与具体的实现相关。此外,如果在遍历时加入了新的元素,那么程序运行结果是不确定的。
4.使用subscript in array
表达式来判断数组是否包含指定的数组下标。如果array[subscript]
存在,表达式返回1
,反正返回0
。
注意:使用subscript in array
不会创建array[subscript]
,而if (array[subscript] != "")
则会创建array[subscript]
(如果array[subscript]
不存在的话)。
5.删除数组元素:delete array[subscript]
。
6.split(string, array, fs)
使用fs
作为字段分隔符(field separator
),把字符串string
拆分后,传到array
数组中。第一个字段保存在array["1"]
,第二个字段保存在array["2"]
…。如果没有指定fs
,则使用内置变量FS
作为分隔符。
7.多维数组。awk
不直接支持多维数组,但可以通过一维数组来模拟。
8.数组元素不能再是数组。