Leggi il file CSV in Bash

Leggi Il File Csv In Bash



La forma completa di CSV è Comma Separated Value. Il file CSV viene utilizzato dal codificatore per molti scopi che memorizzano i dati in formato tabellare semi-strutture. Ogni riga del file viene trattata come una riga della tabella e ogni campo della riga è separato da una virgola (,) nel file CSV. Esistono molti modi in Bash per leggere i file CSV che sono spiegati in questo tutorial.

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, cellulare

101 , 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.