Prerequisiti:
Devi creare un file CSV prima di fare pratica con l'esempio di questo tutorial. Crea un file CSV denominato 'customers.csv' con il seguente contenuto per verificare l'output dello script utilizzato in questo tutorial. In questo file, il 3 rd campi del 4 th riga e 6 th riga sono vuote.
ID, nome, e-mail, indirizzo, cellulare101 , Jafar Iqbal, Jafar @ gmail.com, 9 / A Dhanmondi Dacca, + 8801762341425
102 , Kamal Hossain, Kamal @ gmail.com, 120 Mirpur Dacca, 8801988675345
103 Nirob Chowdhury 33 / 2 Jigatola Dacca, 8801754532312
104 Farheen Hassan @ gmail.com < UN href = 'vuoto' > , UN > 10 Kadhalbagun Dacca, + 8801512875634
105 , Md. Rahim,, 2 / B Dhanmondi Dacca, + 8801700453423
Diversi modi per leggere il file CSV in Bash
Il file CSV può essere analizzato in diversi modi utilizzando uno script Bash. In questa parte del tutorial vengono mostrati diversi modi per leggere il file 'customers.csv'.
Esempio 1: leggere il contenuto originale del file CSV
Crea un file Bash con il seguente script che legge l'intero contenuto del file 'customers.csv' utilizzando il ciclo 'while':
#!/bin/bash
#Imposta il nome del file
nome del file = 'clienti.csv'
#Leggi ogni riga del file in ogni iterazione
Mentre Leggere dati
Fare
#Stampa la riga
eco $dati
Fatto < $nomefile
Dopo l'esecuzione dello script viene visualizzato il seguente output:
Esempio 2: leggere il file CSV capitalizzando l'intestazione
La prima riga del file 'customers.csv' contiene l'intestazione del file. Crea un file Bash con il seguente script che stampa il contenuto del file 'customers.csv' dopo aver scritto in maiuscolo la prima riga del file. Il comando 'awk' viene utilizzato nello script per stampare il contenuto del file dopo aver capitalizzato l'intestazione. La virgola (,) viene assegnata nei valori FS e OFS nello script per leggere il file 'customers.csv' e scrivere il file 'updatedcustomers.csv'. Il comando 'cat' viene utilizzato per stampare il contenuto di entrambi i file.
printf 'File originale: \N '#Stampa il contenuto originale del file CSV
gatto cstomers.csv
#Crea un nuovo file CSV dopo aver capitalizzato l'intestazione
awk 'INIZIO{FS=',';OFS=','}
{
se(NR==1)
stampa in alto($0)
altro
stampa
}' clienti.csv > aggiornatoclienti.csv
printf ' \N File modificato: \N '
#Stampa il nuovo file CSV
gatto aggiornatoclienti.csv
Dopo l'esecuzione dello script viene visualizzato il seguente output:
Esempio 3: sostituire il campo vuoto del file CSV con 'Nessuno'
Creare un file Bash con il seguente script che stampi il contenuto del file “customers.csv” dopo aver modificato il campo vuoto con il valore “Nessuno”. Due campi sono vuoti in questo file che sono menzionati di seguito. Il comando 'awk' viene utilizzato nello script per stampare il contenuto del file dopo aver modificato i campi vuoti. La virgola (,) viene assegnata nei valori FS e OFS nello script per leggere il file 'customers.csv' e scrivere il file 'updatedcustomers.csv'. Il comando 'cat' viene utilizzato per stampare il contenuto di entrambi i file in formato tabulare.
printf 'File originale: \N '#Stampa il contenuto originale del file CSV in forma tabellare
gatto clienti.csv | colonna -s, -T
awk 'INIZIO{FS=',';OFS=','}
{
for(campo=1;campo<=NF;campo++)
{
if($campo == '') $campo='Nessuno'
}
stampa
}' clienti.csv > modificatoclienti2.csv
printf ' \N File modificato: \N '
#Stampa il nuovo file CSV in forma tabellare
gatto modificatoclienti2.csv | colonna -s, -T
Dopo l'esecuzione dello script viene visualizzato il seguente output:
Esempio 4: stampa il numero totale di righe e colonne del file CSV
Crea un file Bash con il seguente script che conta il numero totale di righe e colonne nel file 'customers.csv'. La variabile NR viene utilizzata per stampare il numero totale di righe del file. La variabile NF viene utilizzata per stampare il numero totale di campi del file.
printf 'File originale: \N '#Stampa il contenuto originale del file CSV
gatto clienti.csv
eco
eco -N 'Righe totali:'
awk -F, 'FINE{stampa NR}' clienti.csv
eco -N 'Colonne totali:'
awk -F, 'FINE{print NF}' clienti.csv
Il seguente output viene visualizzato dopo l'esecuzione dello script. Le righe totali nel file sono 6 e i campi totali del file sono 5 che vengono stampati nell'output:
Conclusione
I metodi per leggere un file CSV, modificare il file CSV e contare le righe e le colonne del file CSV utilizzando lo script Bash sono mostrati in questo tutorial.