Suche…
Array-Grundlagen
Das Erstellen eines neuen Arrays ist etwas verwirrend, da es in awk keinen echten Bezeichner für ein Array gibt. Ein Array kann also nicht wirklich mit unserem AWK-Code initialisiert werden.
Ein Array in awk ist assoziativ, was bedeutet, dass jede Zeichenfolge oder Zahl ein Schlüssel sein kann. Dies bedeutet, dass das Array eher einem Schlüsselwertpaar, einer Map usw. ähnelt. In einer anderen Anmerkung haben die Arrays keine maximale Größe.
Das Erstellen eines Arrays in AWK ist sehr einfach, da Sie einen Variablennamen und einen richtigen Schlüssel verwenden und ihn einer Variablen zuweisen. Das heißt, wenn der folgende Code ausgeführt wird, haben wir bereits ein Array namens myArray :
BEGIN {
myArray["key"] = "value"
}
Wir sind nicht verpflichtet, Arrays nur am Anfang zu erstellen. Nehmen wir an, wir haben den folgenden Eingabestrom:
A b c
D e f
G h i
Und führe folgenden Code damit aus:
{
myOtherArray[$1] = $2 "-" $3
}
# The array will look like this:
# myOtherArray["A"] = "b-c"
# myOtherArray["D"] = "e-f"
# myOtherArray["G"] = "h-i"
Wenn ein Array mit Schlüsselwertpaaren gefüllt ist, kann der Wert nur mit dem Schlüssel abgerufen werden. Das heißt, wenn wir in myOtherArray Schlüssel "A" myOtherArray wir "bc" .
END {
print(myOtherArray["A"])
}
Wir haben auch die Möglichkeit, jeden Schlüssel zu durchlaufen, um jeden Wert zu erhalten. Das Durchlaufen jedes Schlüssels eines Arrays ist eine einfache Sache, die jedoch beim Sturz auftritt: Es ist unsortiert. Die folgende Schleife ähnelt einer for-each-Schleife, die den Schlüssel abruft:
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"