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