LINUX

Come leggere il file riga per riga nello script Bash [3 Methods]

leggi il file riga per riga nello script bash

Quando si scrive uno script bash, dipende dal flusso di automazione, a volte lo script deve leggere il contenuto dal file riga per riga. Qui impariamo 3 metodi in uno script bash per leggere il file riga per riga.

Metodo 1: utilizzo del reindirizzamento in entrata

Il modo più semplice per leggere un file riga per riga è utilizzare il redirector di input in un ciclo while.

Per dimostrarlo abbiamo creato un file di esempio chiamato “mycontent.txt” e lo useremo durante questo tutorial.

$ cat mycontent.txt
This is a sample file
We are going through contents
line by line
to understand

Creiamo uno script chiamato “example1.sh” che utilizza iscrizione reindirizzare e ciclo continuo.

$ more example1.sh
#!/bin/bash
while read y
do
echo "Line contents are : $y "
done < mycontent.txt

Come funziona:

– Dichiara la shell che è “bash”
– Avviare il ciclo while e salvare il contenuto della riga nella variabile “y”
– fai parte del ciclo while (Punto di inizio)
– echo to print e “$y” significa print valore variabile cioè linea
– Leggere il contenuto del file utilizzando il redirector di input “<" e chiudere con done

Esecuzione dello script e dell’output:

$ ./example1.sh
Line contents are : This is a sample file
Line contents are : We are going through contents
Line contents are : line by line
Line contents are : to understand

Metodo 2: utilizzando il comando cat

Il secondo metodo consiste nell’utilizzare il comando cat e quindi inviarlo Uscita come iscrizione a tempo ciclo continuo uso tubo.

Crea un file di script “example2.sh”, con contenuti come:

$ more example2.sh
#!/bin/bash
cat mycontent.txt | while read y

do
echo "Line contents are : $y "
done

Come funziona:

– Dichiara la shell che è “bash”
– Output del comando cat inviato come input al ciclo while tramite pipe
“|” e salvando il contenuto della riga nella variabile “y”
– fai parte del ciclo while (Punto di inizio)
– echo to print e “$y” significa print valore variabile cioè linea
– La chiusura del ciclo while è completa

Esecuzione dello script e dell’output:

$ ./example2.sh

Line contents are : This is a sample file
Line contents are : We are going through contents
Line contents are : line by line
Line contents are : to understand

Suggerimento: possiamo combinare tutti i comandi e usarli come oneliner.

Produzione:

$ while read line; do echo $line; done < mycontent.txt
This is a sample file
We are going through contents
line by line
to understand

3. Utilizzo del nome del file passato come argomento

Questo terzo metodo invierà il nome del file come a argomento di input attraverso la riga di comando.

Crea un file di script chiamato “example3.sh” in questo modo:

$ more example3.sh
#!/bin/bash
while read y
do
echo "Line contents are : $y "
done < $1

Come funziona:

– Dichiara la shell che è “bash”
– Avviare il ciclo while e salvare il contenuto della riga nella variabile “y”
– fai parte del ciclo while (Punto di inizio)
– echo to print e “$y” significa print valore variabile cioè linea
– Lettura del contenuto del file dall’argomento della riga di comando, ad esempio $1, utilizzando il redirector di input “<" e chiudendo con done

Esecuzione dello script e dell’output:

$ ./example3.sh mycontent.txt 

Line contents are : This is a sample file
Line contents are : We are going through contents Output of Script
Line contents are : line by line
Line contents are : to understand

Barra rovesciata e gestione dei caratteri di escape

Quando il contenuto del file ha una barra rovesciata e caratteri di escape, il comando read viene utilizzato per ignorare quei caratteri di barra rovesciata e escape.

Se vogliamo leggere tutto dal file, allora usa -r opzione per impedire l’interpretazione della barra rovesciata e il valore visualizzato nella console.

Se il contenuto del file ha un separatore di file come virgola o pipe, possiamo utilizzare IFS (Internal Field Separator) per dividere il file in base al delimitatore e visualizzare i valori.

Esempio di script di shell:

#!/bin/bash
inputfile="foobar.txt"
while IFS=, read -r y
do
echo $y
done < $inputfile

Flusso dello script:

– Assegnare il percorso del file alla variabile “inputfile”.
– Leggi il file riga per riga nel ciclo while
– -r impedisce l’interpretazione dei backslash escape
– IFS (Internal Field Separator), se vogliamo dividere la riga con il separatore di campo, è necessario specificare il valore del separatore (Es: se la riga ha un valore come “foo, bar” e si desidera dividere la virgola, allora il valore IFS dovrebbe essere (IFS=,))
– echo aiuterà a stampare il contenuto sulla console
– una volta raggiunta la fine del file, il ciclo esce

Conclusione

Questo tutorial ha spiegato come leggere il contenuto del file riga per riga usando lo script della shell bash con esempi. Aiuta a cercare le stringhe in un file leggendo le righe singolarmente.

Grazie per la lettura, si prega di lasciare i vostri suggerimenti e recensioni nella sezione commenti.

Related Articles

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Back to top button
Close