Ricerca…
Nozioni di base sulle matrici
Creare un nuovo array è un po 'confuso, in quanto non vi è alcun identificatore reale per un array in awk. Quindi, un array non può essere realmente inizializzato con il nostro codice AWK.
Un array in awk è associativo, il che significa che qualsiasi stringa o numero può essere una chiave. Ciò significa che l'array è più simile a un dizionario di coppia valore-chiave, mappa, ecc. In un'altra nota, gli array non hanno una dimensione massima.
La creazione di un array in AWK è molto semplice, dato che prendi un nome di variabile, una chiave corretta e assegnalo a una variabile. Questo significa che quando viene eseguito il codice seguente, abbiamo già creato un array chiamato myArray :
BEGIN {
myArray["key"] = "value"
}
Noi non siamo tenuti a creare matrici solo all'inizio. Diciamo che abbiamo il seguente flusso di input:
A b c
D e f
G h i
Ed esegui il seguente codice con questo:
{
myOtherArray[$1] = $2 "-" $3
}
# The array will look like this:
# myOtherArray["A"] = "b-c"
# myOtherArray["D"] = "e-f"
# myOtherArray["G"] = "h-i"
Quando un array è riempito con coppie di valori chiave, è possibile recuperare il valore solo con la chiave. Ciò significa che se usiamo la chiave "A" in myOtherArray otteniamo "bc" .
END {
print(myOtherArray["A"])
}
Abbiamo anche la possibilità di scorrere ogni tasto per ottenere ogni valore. Passare attraverso ogni chiave di un array è una cosa semplice da fare, tuttavia ha una rovina: è non ordinato. Il seguente ciclo è come un ciclo for-each, che recupera la chiave:
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"