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"


Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow