数组基础知识
创建一个新数组有点令人困惑,因为 awk 中没有数组的真实标识符。因此,使用我们的 AWK 代码无法真正初始化数组。
awk 中的数组是关联的,这意味着任何字符串或数字都可以是键。这意味着数组更像是键值对字典,映射等。另一方面,数组没有最大大小。
在 AWK 中创建数组非常简单,因为你获取变量名称,正确的键并将其分配给变量。这意味着当执行以下代码时,我们已经创建了一个名为 myArray
的数组:
BEGIN {
myArray["key"] = "value"
}
我们不一定只在开始时创建数组。假设我们有以下输入流:
A b c
D e f
G h i
并使用以下代码执行以下代码:
{
myOtherArray[$1] = $2 "-" $3
}
# The array will look like this:
# myOtherArray["A"] = "b-c"
# myOtherArray["D"] = "e-f"
# myOtherArray["G"] = "h-i"
当数组填充键值对时,只能使用键检索值。这意味着如果我们在 myOtherArray
中使用关键 A
,我们就会得到 b-c
。
END {
print(myOtherArray["A"])
}
我们还可以选择循环每个键以获取每个值。循环遍历数组的每个键是一件简单的事情,但是它已经崩溃了:它是未分类的。以下循环类似于 for-each 循环,它检索密钥:
END {
for (key in myOtherArray) {
print "myOtherArray[\"" key "\"] = " myOtherArray[key]
}
}
# Outputs (literal strings):
myOtherArray["A"] = "b-c"
myOtherArray["D"] = "e-f"
myOtherArray["G"] = "h-i"