Come usare l'array nel comando AWK

Come usare l'array nel comando AWK
Una variabile di array viene utilizzata per archiviare più di un dati. È supportato dalla maggior parte dei linguaggi di programmazione per archiviare più dati. Un array ha due parti. Questi sono chiave e valore. La chiave viene utilizzata per accedere alla posizione del valore. Un array può essere numerico e associativo. L'array numerico supporta solo il valore numerico come array chiave e associativo supporta il valore numerico e indice come chiave. Un array associativo è supportato dal comando AWK. Come è possibile definire, accedere o modificare l'array associativo nel comando AWK è mostrato in questo tutorial utilizzando vari esempi.

Sintassi:

ArrayName [Key] = Value

Un nome deve dichiarare per la variabile dell'array. ArrayName è il nome dell'array qui. Ogni array deve utilizzare la terza fascia per definire il chiave O indice e sarà qualsiasi valore di stringa per l'array associativo. Valore può essere qualsiasi carattere, numero o stringa che archiverà nell'indice particolare dell'array.

Esempio-1: Definizione e lettura di un array monodimensionale in AWK

Un array monodimensionale può archiviare un elenco di dati a colonna singola. Questo tipo di array contiene una singola chiave e un valore per ciascun elemento di array. Questo array può essere utilizzato nel comando AWK come altri linguaggi di programmazione. In questo esempio, un array chiamato libro viene dichiarato con tre elementi e il loop viene utilizzato per leggere e stampare ogni elemento. Esegui il seguente comando dal terminale.

$ echo | Awk 'Begin book ["html"] = "HTML Pocket Guide 2010";
libro ["js"] = "javascript efficace";
libro ["css"] = "apprendimento web design";
End for (i in book) stampa "Il libro di", i, "è", libro [i]; '

Produzione:

Esempio-2: definizione e lettura di un array bidimensionale in AWK

Un array bidimensionale viene utilizzato per archiviare l'elenco dei dati tabulari che contiene un numero fisso di righe e colonne. L'array bidimensionale chiamato studenti è dichiarato in questo esempio che contiene tre elementi. Qui, l'ID e il nome dello studente sono usati come valori chiave dell'array. Come l'esempio precedente, lo script AWK viene utilizzato per stampare i valori dell'array. Esegui il seguente script dal terminale.

$ echo | awk 'inizio
Studenti ["87462, Mohammed Ali"] = 87;
Studenti ["98376, Sakib al Hasan"] = 99;
Studenti ["79937, Musfikur Rahman"] = 88;
Stampa "(id, nome) => segni";

End per (i in studenti) stampa "(", i, ") =>", studenti [i]; '

Produzione:

Esempio-3: Eleting Array Element

Qualsiasi valore dell'array può essere eliminato in base al valore chiave. Qui, libro L'array con tre elementi è definito all'inizio dello script. Successivamente, il valore della chiave Html viene eliminato usando eliminare comando. Il valore dell'elemento di Html La chiave viene stampata prima e dopo il eliminare comando. Esegui il comando seguente per controllare l'output.

$ echo | Awk 'Begin book ["html"] = "HTML Pocket Guide 2010";
libro ["js"] = "javascript efficace";
libro ["css"] = "apprendimento web design";
stampare "prima di eliminare -", libro ["html"];
elimina il libro ["html"];
Stampa "\ nafter delete -", book ["html"]; '

Produzione:

L'output mostra che il valore di Html L'indice è vuoto dopo l'esecuzione eliminare comando.

Esempio-4: Reading Bash Array in AWK

Negli esempi precedenti, l'array è dichiarato nel comando AWK ed. Ma puoi leggere qualsiasi array di bash di Awk Script. In questo esempio, un array di bash chiamato Lang è dichiarato al primo comando. Nel secondo comando, i valori dell'array bash vengono passati nel comando awk che memorizza tutti gli elementi in un array AWK chiamato Awkarray. I valori dell'array Awkarray sono stampati utilizzando per loop. Esegui il comando seguente dal terminale per controllare l'output.

$ lang = ("php" "asp" "jsp" "c#" "c ++")
$ printf '%s \ n' "$ lang [@]" | awk 'awkarray [nr] = $ 1 fine per
(i in awkarray) stampa awkarray [i], "\ n"; '

Esempio-5: leggere il contenuto del file in un array Awk

Il contenuto di qualsiasi file può essere letto utilizzando Awk Array. Crea un file di testo denominato uccello.TXT Con il contenuto indicato di seguito.

uccello.TXT

Cocktail
Quaglia
Pappagallo grigio
Baazigar

Il seguente script Awk viene utilizzato per leggere il contenuto di uccello.TXT archivia e memorizza i valori nell'array, Awkarray. Per il ciclo viene utilizzato per analizzare l'array e stampare i valori nel terminale. Esegui il seguente script dal terminale.

$ awk 'awkarray [counter ++] = $ 1; End for (n = 0; nstampa awkarray [n], "\ n"; ' uccello.TXT

Produzione:

Lo script stampa il contenuto di uccello.TXT.

Esempio-6: rimozione di voci duplicate da un file

Lo script AWK può essere utilizzato per rimuovere i dati duplicati da qualsiasi file di testo. Crea un file di testo denominato frutta.TXT Con i seguenti contenuti. Ci sono due dati duplicati nel file. Questi sono Mela E Arancia.

frutta.TXT

Mela
Arancia
Uva
Mela
Banana
Arancia
Guaiava

Il seguente script Awk leggerà ogni riga dal file di testo, frutta.TXT e controlla che la linea corrente esiste o meno nell'array, arr. Se la linea esiste nell'array, non memorizzerà la linea nell'array e non stampa il valore nel terminale. Quindi, lo script memorizzerà solo le righe uniche dal file nell'array e stampa. Esegui i comandi dal terminale.

$ gatto frutti.TXT
$ awk '!($ 0 in arr) print arr [$ 0], $ 0; ' frutta.TXT

Produzione:

Il primo stamperà il contenuto del file, frutti.txt e il secondo comando stamperanno il contenuto di frutti.txt dopo aver omesso le righe duplicate dal file.

Conclusione:

Questo tutorial mostra i vari usi dell'array nello script Awk usando diversi esempi con spiegazione. È possibile accedere anche a un array bash e qualsiasi contenuto di file di testo utilizzando Awk Array. Se sei nuovo nella programmazione AWK, questo tutorial ti aiuterà a imparare gli usi di Awk Array dalla base e sarai in grado di utilizzare Array in AWK Script correttamente.