在awk中遍历数组主要有两种方式:
关联数组遍历:
Awk中的数组默认为关联数组(也称为哈希表),可以使用任意字符串或数字作为索引。要遍历关联数组,可以使用for (key in array)
结构:# 示例:遍历关联数组 awk 'BEGIN { sites["runoob"] = "www.runoob.com" sites["google"] = "www.google.com" for (site in sites) { print site, "->", sites[site] } }'
这将输出每个键及其对应的值。
数值数组遍历:
如果需要遍历的是按顺序编号的数值数组,理论上可以直接用类似C语言的循环语句来遍历,但是由于awk并不保证数组元素的顺序,所以通常不推荐这种方法,除非你知道数组是严格有序填充的,并且知道其范围:# 不常用的方法,仅适用于已知长度和连续索引的数值数组 awk 'BEGIN { a[1] = "apple" a[2] = "banana" a[3] = "cherry" for (i = 1; i <= length(a); i++) { print i, "->", a[i] } }'
实际上,即使对于数值数组,大多数情况下仍建议使用
for (i in a)
的方式进行遍历,尽管这可能会导致元素的顺序不确定。
总之,在实际编写Awk脚本时,通常更倾向于使用 for (key in array)
方式来遍历数组,因为它能确保遍历到数组的所有元素,无论其索引是何种类型。