AWK - Array
AWK ha array associativi e una delle cose migliori è che gli indici non devono essere un insieme continuo di numeri; puoi usare una stringa o un numero come indice di un array. Inoltre, non è necessario dichiarare in anticipo la dimensione di un array: gli array possono espandersi / ridursi in fase di esecuzione.
La sua sintassi è la seguente:
Sintassi
array_name[index] = value
Dove array_name è il nome dell'array, index è l'indice dell'array e value è qualsiasi valore assegnato all'elemento della matrice.
Creazione di array
Per ottenere maggiori informazioni sull'array, creiamo e accediamo agli elementi di un array.
Esempio
[jerry]$ awk 'BEGIN {
fruits["mango"] = "yellow";
fruits["orange"] = "orange"
print fruits["orange"] "\n" fruits["mango"]
}'
Eseguendo questo codice, ottieni il seguente risultato:
Produzione
orange
yellow
Nell'esempio sopra, dichiariamo l'array come fruitsil cui indice è il nome del frutto e il valore è il colore del frutto. Per accedere agli elementi dell'array, usiamoarray_name[index] formato.
Eliminazione di elementi di array
Per l'inserimento, abbiamo utilizzato l'operatore di assegnazione. Allo stesso modo, possiamo usaredeleteistruzione per rimuovere un elemento dall'array. La sintassi dell'istruzione delete è la seguente:
Sintassi
delete array_name[index]
L'esempio seguente elimina l'elemento orange. Quindi il comando non mostra alcun output.
Esempio
[jerry]$ awk 'BEGIN {
fruits["mango"] = "yellow";
fruits["orange"] = "orange";
delete fruits["orange"];
print fruits["orange"]
}'
Array multidimensionali
AWK supporta solo array unidimensionali. Ma puoi facilmente simulare un array multidimensionale utilizzando lo stesso array unidimensionale.
Ad esempio, di seguito è riportato un array bidimensionale 3x3 -
100 200 300
400 500 600
700 800 900
Nell'esempio precedente, array [0] [0] memorizza 100, array [0] [1] 200 e così via. Per memorizzare 100 nella posizione dell'array [0] [0], possiamo usare la seguente sintassi:
Sintassi
array["0,0"] = 100
Anche se abbiamo dato 0,0come indice, questi non sono due indici. In realtà, è solo un indice con la stringa0,0.
L'esempio seguente simula un array 2-D:
Esempio
[jerry]$ awk 'BEGIN {
array["0,0"] = 100;
array["0,1"] = 200;
array["0,2"] = 300;
array["1,0"] = 400;
array["1,1"] = 500;
array["1,2"] = 600;
# print array elements
print "array[0,0] = " array["0,0"];
print "array[0,1] = " array["0,1"];
print "array[0,2] = " array["0,2"];
print "array[1,0] = " array["1,0"];
print "array[1,1] = " array["1,1"];
print "array[1,2] = " array["1,2"];
}'
Eseguendo questo codice, ottieni il seguente risultato:
Produzione
array[0,0] = 100
array[0,1] = 200
array[0,2] = 300
array[1,0] = 400
array[1,1] = 500
array[1,2] = 600
È inoltre possibile eseguire una serie di operazioni su un array come l'ordinamento dei suoi elementi / indici. A tale scopo, puoi usareassort e asorti funzioni