Ecco, questo è un array:
ortolano["banana"] = 20
dove
- ortolano è il nome dell'array
- banana è l'indice dell'array. A dire il vero preferisco più chiave che indice. Intanto i signori A., W., e K. hanno preferito chiamarlo indice. Continuerò a chiamarli chiavi. Anzi, keys.
- 20 è il valore assegnato all'array ortolano.
Per vedere il valore dell'array ortolano[banana], si usa print. Costruiamo la riga di comando.
$ awk 'BEGIN{ortolano["banana"]=20; print ortolano["banana"]}'
Come risultato, ovviamente, ci darà 20. Provare per credere
Ho appena finito di leggere il manuale originale di AWK, di cui vi mostro la copertina...
Ad onor del vero i Signori A., W e K, l'argomento array, lo hanno trattato veramente
Procediamo con gli esempi.
ortolano["banana"] = 20
ortolano["pesca"] = 37
ortolano["melone"] = 10
Costruiamo uno script che ci dica chiavi e rispettivi valori dell'array ortolano. (ciclare.awk)
#!/usr/bin/awk -f
BEGIN {
ortolano["banana"]=20
ortolano["pesca"]=37
ortolano["melone"]=10
for(key in ortolano) {
print key, ortolano[key]
}
}
Si capisce, vero? la variabile Key è andata a "pescare" nell'array ortolano le nostre tre chiavi (banana pesca e meloni) e print ce li stampa. E ci stampa pure i rispettivi valori (ortolano[key]).Eseguire lo script, prego.
Cerchiamo di fare qualche passo avanti.
Creiamo uno script autoesplicativo. (es.awk)
#!/usr/bin/awk -f
BEGIN {
print "\n\n"
#L'array geo ha come chiavi tre Stati e, come valori, le rispettive capitali.
geo["Francia"] = "Parigi"
geo["Angola"] = "Luanda"
geo["Bhutan"] = "Thimphu"
for (i in geo) {
printf "%8s %06s\n", i, geo[i] #su printf ci ritorneremo
}
# Eliminiamo la chiave "Francia" con il comando delete.
print "\n\n"
delete geo["Francia"]
for (i in geo) {
print i, geo[i] #Controlliamo se ha eliminato la chiave Francia col suo relativo valore.
}
# cerca se la chiave Francia esiste
print "\n\n"
print "Francia " ( "Francia" in geo ) #Dà 0, la chiave Francia non esiste
print "Bhutan " ( "Bhutan" in geo )"\n" #Dà 1, la chiave Bhutan esiste
}
Ora facciamo un piccolo esperimento. Creiamo una tabella semplice semplice. (tab.txt)banane 15
pesche 13
meloni 12
meloni 10
banane 14
pesche 12
E vediamo se si capisce cosa fa lo script seguente. E' semplice semplice, ma estremamente potente. (ab.awk)
#!/usr/bin/awk -f
{
n[$1]+=$2;
}
END {
for (i in n) {
print i,n[ i ]
}
}
Ci stiamo avvicinando alla potenza di questo straordinario strumento, l'array. Nelle prossime puntate, ancora arrays. Ciro ha capito al volo. Mio nonno di meno. Ma lui è giustificato, non ci sente tanto bene. :)L'indice di "Un po' di AWK" lo trovate qui.
Alla prossima.
Nessun commento:
Posta un commento