awk
arrayer
Sök…
Grundläggande om array
Att skapa en ny matris är lite förvirrande eftersom det inte finns någon verklig identifierare för en matris i awk. Så, en matris kan inte riktigt initialiseras med vår AWK-kod.
En matris i awk är associerande, vilket innebär att valfri sträng eller nummer kan vara en nyckel. Detta innebär att matrisen mer liknar en nyckelvärdesparordbok, karta etc. På en annan anmärkning har matriserna inte en maximal storlek.
Att skapa en matris i AWK är väldigt enkelt, eftersom du tar ett variabelnamn, en rätt nyckel och tilldelar den till en variabel. Det här betyder att när följande kod körs har vi redan skapat en matris som heter myArray :
BEGIN {
myArray["key"] = "value"
}
Vi är inte bundna till att skapa matriser i början. Låt oss säga att vi har följande inmatningsström:
A b c
D e f
G h i
Och kör följande kod med detta:
{
myOtherArray[$1] = $2 "-" $3
}
# The array will look like this:
# myOtherArray["A"] = "b-c"
# myOtherArray["D"] = "e-f"
# myOtherArray["G"] = "h-i"
När en matris är fylld med nyckelvärdespar kan man hämta värdet endast med nyckeln. Det betyder att om vi använder nyckel "A" i myOtherArray vi "bc" .
END {
print(myOtherArray["A"])
}
Vi har också möjlighet att gå igenom varje knapp för att få varje värde. Att slinga sig genom varje nyckel i en matris är en enkel sak att göra, men det har fallet: det är osorterat. Följande slinga är som en för varje slinga, som hämtar nyckeln:
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"