Zoeken…


Array basics

Het maken van een nieuwe array is enigszins verwarrend, omdat er geen echte identificatie voor een array in awk bestaat. Een array kan dus niet echt worden geïnitialiseerd met onze AWK-code.

Een array in awk is associatief, wat betekent dat elke tekenreeks of nummer een sleutel kan zijn. Dit betekent dat de array meer lijkt op een sleutelwoordenpaarwoordenboek, kaart enz. Op een andere opmerking hebben de arrays geen maximale grootte.

Een array maken in AWK is heel eenvoudig, omdat u een variabelenaam, een juiste sleutel neemt en deze aan een variabele toewijst. Dit betekent dat wanneer de volgende code wordt uitgevoerd, we al een array met de naam myArray hebben gemaakt:

BEGIN {
    myArray["key"] = "value"
}

We zijn niet verplicht om alleen in het begin arrays te maken. Laten we zeggen dat we de volgende invoerstroom hebben:

A b c
D e f
G h i

En voer hiermee de volgende code uit:

{
    myOtherArray[$1] = $2 "-" $3
}
# The array will look like this:
# myOtherArray["A"] = "b-c"
# myOtherArray["D"] = "e-f"
# myOtherArray["G"] = "h-i"

Wanneer een array is gevuld met sleutelwaardeparen, kan de waarde alleen met de sleutel worden opgehaald. Dit betekent dat als we sleutel "A" in myOtherArray we "bc" .

END {
    print(myOtherArray["A"])
}

We hebben ook de optie om elke toets te doorlopen om elke waarde te krijgen. Het doorlopen van elke sleutel van een array is eenvoudig, maar het heeft een nadeel: het is ongesorteerd. De volgende lus is als een for-elke lus, die de sleutel ophaalt:

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"


Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow