Articles

Scorrere il contenuto di un file in Bash

Spesso è necessario leggere ciascuna riga da un file utilizzando uno script bash. Ci sono vari approcci per leggere le linee formano un file. Nell’esempio seguente abbiamo prima descritto come creare un file di esempio e quindi eseguire uno script leggendo quel file di esempio.

Creare un file da leggere

# Open vi Editorvi a_file.txt# Input the below linesMondayTuesdayWednesdayThursdayFridaySaturdaySunday# cat the filecat a_file.txt

L’esecuzione del codice precedente ci dà il seguente risultato −

MondayTuesdayWednesdayThursdayFridaySaturdaySunday

Usando Do-While

In questo approccio usiamo un ciclo do-while per leggere un file., Diamo il nome del file come input alla fine del file. Per prima cosa creiamo uno script e diamo il permesso di esecuzione ad esso. Quindi solo può leggere il file e mostrare il risultato.

#!/bin/bashwhile read LINEdo echo "$LINE"done < a_file.txt

L’esecuzione del codice precedente ci dà il seguente risultato −

MondayTuesdayWednesdayThursdayFridaySaturdaySunday

Usando for e in

Nel prossimo approccio usiamo un ciclo for insieme alla clausola in. Qui memorizziamo il risultato del comando cat (che è ogni riga) in una variabile che fa parte del ciclo for e fa eco alla variabile.,

#!/bin/bashfile=a_file.txtfor i in `cat $file`doecho "$i"done

L’esecuzione del codice precedente ci dà il seguente risultato −

MondayTuesdayWednesdayThursdayFridaySaturdaySunday

Con solo echo

Possiamo anche ottenere il contenuto del file usando solo echo. Ma il risultato verrà fuori come una matrice di linee e stampato come output di una riga che mostra la combinazione di tutte le linee.

echo $( < a_file.txt )

L’esecuzione del codice precedente ci dà il seguente risultato:

Monday Tuesday Wednesday Thursday Friday Saturday Sunday

Lettura di file con righe vuote

Se un file ha alcune righe che sono vuote, possiamo evitarle nell’output usando il seguente codice., Questo utilizza il IFS (separatore di campo interno) è impostato su stringa vuota in modo che le righe vuote vengono trattati come separatore di campo ed evitati in uscita. Supponendo che ci siano linee vuote tra la 3a e la 4a riga, quei privilegi vuoti non verranno stampati.

#!/bin/bashwhile IFS = read -r LINEdo echo "$LINE"done < a_file.txt

in Esecuzione il codice qui sopra ci dà il seguente risultato −

MondayTuesdayWednesdayThursdayFridaySaturdaySunday

Pubblicato il 03-Gen-2020 11:45:05

Pubblicità