Come usare il comando readarray per leggere l'array 2d in bash

Come usare il comando readarray per leggere l'array 2d in bash

Bash è un popolare linguaggio di scripting di shell utilizzato nei sistemi operativi Linux e Unix. Fornisce un ricco set di comandi e funzionalità che semplificano l'automazione delle attività ripetitive. Il "readarray" è uno dei comandi più utili in bash. Con questo comando, le righe di un file possono essere lette in un array 2D. In questo post, esamineremo come leggere le righe da un file in un array 2D usando il comando "readarray" di Bash.

Usando 'readarray' in bash

Il comando "readarray" legge le righe da un file o input standard e le assegna a un array. La sintassi per l'utilizzo di "readarray" è la seguente:

readarray [-d delim] [-n count] [-o origin] [-s count] [-t] array


Le opzioni disponibili per il comando "readarray" sono:

'-d delim': Imposta il delimitatore da utilizzare quando si dividono le linee in elementi dell'array e per impostazione predefinita, il delimitatore è un carattere newline.

'-n conteggio': Specifica il numero massimo di righe da leggere nell'array.

'-O origine': Imposta l'indice iniziale dell'array.

'-S COUNT': Specifica il numero di righe da saltare prima di leggere nell'array.

'-T': Rimuove il carattere newline finale da ogni riga letto nell'array.

Ecco un esempio di utilizzo di "readarray" per leggere le righe da un file in un array 2D e per questo ho creato un Testfile.TXT i cui contenuti sono:

1 2 3
4 5 6
7 8 9


Quindi ecco lo script di Bash completo che dimostra l'uso del comando "readarray":

#!/Bin/Bash
# Leggi le righe da un file nell'array
riga di readarray -t < testfile.txt
# Dichiara un array 2D con 3 righe e 3 colonne
Dichiarare -Un array
# Iterare sulle linee e dividere ogni linea in elementi
per i in "$ !linee [@] "; do
Ifs = "leggi -r -a elementi <<< "$lines[i]"
per j in "$ !elementi [@] "; do
if [[-n "$ Elements [j]"]; Poi
Array [$ i, $ j] = $ Elements [j]
fi
Fatto
Fatto
# Stampa l'array
per ((i = 0; i<3;i++)); do
per ((j = 0; j<3;j++)); do
echo -n "$ array [$ i, $ j]"
Fatto
eco
Fatto


Qui prima ho dichiarato un array 2D chiamato "Array" e poi ho usato il comando "ReadArray" per leggere le righe da un file chiamato "TestFile.txt 'nell'array' linee '. Successivamente, il codice iterate sull'array "righe" e dividi ogni riga in elementi usando i comandi "IFS" e "Leggi".

Successivamente, memorizza gli elementi nell'array 2D 'Array' e quindi utilizza il comando di lettura per dividere ogni riga in elementi. Ora ogni elemento è assegnato all'elemento corrispondente nell'array "array" e infine, vengono stampati il ​​contenuto dell'array "array" che utilizza nidificati per i loop.

Conclusione

Il comando "ReadArray" semplifica la manipolazione di grandi quantità di dati negli script bash. Seguendo gli esempi forniti in questo articolo, puoi iniziare a utilizzare "ReadArray" nei tuoi script bash per leggere le righe dai file ed elaborarli in array 2D.