数组基础知识

创建一个新数组有点令人困惑,因为 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"