Come utilizzare il comando readarray per leggere l'array 2D in Bash

Come Utilizzare Il Comando Readarray Per Leggere L Array 2d In Bash



Bash è un popolare linguaggio di scripting della 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.

Utilizzo di 'readarray' in Bash

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







readarray [ -d CONDIVIDI ] [ -n CONTA ] [ - L'ORIGINE ] [ -s CONTA ] [ -T ] vettore


Le opzioni disponibili per il comando 'readarray' sono:



'-d CONDIVIDI': Imposta il delimitatore da utilizzare quando si dividono le righe in elementi di matrice e, per impostazione predefinita, il delimitatore è un carattere di nuova riga.



'-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 di nuova riga finale da ogni riga letta nell'array.

Ecco un esempio dell'utilizzo di 'readarray' per leggere le righe da un file in un array 2D e per questo ho creato un filediprova.txt i cui contenuti sono:

1 2 3
4 5 6
7 8 9


Quindi ecco lo script bash completo che dimostra l'uso del comando 'readarray':

#!/bin/bash
# Legge righe da un file nell'array
readarray -T linee < filediprova.txt
# Dichiara un array 2D con 3 righe e 3 colonne
dichiarare -UN vettore
# Itera sulle righe e suddividi ogni riga in elementi
per io In ' ${!linee[@]} ' ; Fare
IFS = ' ' Leggere -R -UN elementi <<< ' ${linee[i]} '
per J In ' ${!elementi[@]} ' ; Fare
Se [ [ -N ' ${elementi[j]} ' ] ] ; Poi
vettore [ $i , $ j ] = ${elementi[j]}
Essere
Fatto
Fatto
# Stampa l'array
per ( ( io = 0 ;io < 3 ;io++ ) ) ; Fare
per ( ( J = 0 ;J < 3 ;j++ ) ) ; Fare
eco -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 'lines'. Successivamente, il codice itera sull'array 'lines' e divide ogni riga in elementi utilizzando i comandi 'IFS' e 'read'.

Successivamente, memorizza gli elementi nell'array 2D e quindi utilizza il comando read per dividere ogni riga in elementi. Ora ogni elemento viene assegnato all'elemento corrispondente nell'array 'array' e, infine, vengono stampati i contenuti dell'array 'array' utilizzando i cicli for nidificati.

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 elaborarle in array 2D.