Forudsætninger:
Du skal oprette en CSV-fil, før du øver dig på eksemplet med denne øvelse. Opret en CSV-fil med navnet 'customers.csv' med følgende indhold for at kontrollere outputtet af scriptet, der bruges i denne øvelse. I denne fil, den 3 rd felter af de 4 th linje og 6 th linje er tomme.
ID, navn, e-mail, adresse, mobil101 , Jafar Iqbal, Jafar @ gmail.com, 9 / A Dhanmondi Dhaka, + 8801762341425
102 , Kamal Hossain, Kamal @ gmail.com, 120 Mirpur Dhaka, 8801988675345
103 Nirob Chowdhury 33 / 2 Jigatola Dhaka, 8801754532312
104 Farheen Hasan @ gmail.com < -en href = 'blank' > , -en > 10 Kadhalbagun Dhaka, + 8801512875634
105 , Md. Rahim,, 2 / B Dhanmondi Dhaka, + 8801700453423
Forskellige måder at læse CSV-filen på i Bash
CSV-filen kan parses på forskellige måder ved hjælp af et Bash-script. Forskellige måder at læse filen 'customers.csv' på er vist i denne del af selvstudiet.
Eksempel 1: Læs det originale indhold af CSV-filen
Opret en Bash-fil med følgende script, der læser det fulde indhold af filen 'customers.csv' ved hjælp af 'while'-løkken:
#!/bin/bash
#Indstil filnavnet
filnavn = 'kunder.csv'
#Læs hver linje i filen i hver iteration
mens Læs data
gør
#Udskriv linjen
ekko $data
Færdig < $filnavn
Følgende output vises efter eksekvering af scriptet:
Eksempel 2: Læs CSV-filen ved at skrive overskriften med stort
Den første linje i filen 'customers.csv' indeholder overskriften på filen. Opret en Bash-fil med følgende script, der udskriver indholdet af 'customers.csv'-filen efter at have brugt den første linje i filen med stort. Kommandoen 'awk' bruges i scriptet til at udskrive indholdet af filen efter at have skrevet overskriften med stort. Kommaet(,) er tildelt i FS- og OFS-værdierne i scriptet til at læse filen 'customers.csv' og skrive filen 'updatedcustomers.csv'. Kommandoen 'cat' bruges til at udskrive indholdet af begge filer.
printf 'Original fil: \n '#Udskriv det originale indhold af CSV-filen
kat cstomers.csv
#Opret en ny CSV-fil efter at have skrevet overskriften med stort
awk 'BEGIN{FS=',';OFS=','}
{
hvis(NR==1)
print top ($0)
andet
}' kunder.csv > opdaterede kunder.csv
printf ' \n Ændret fil: \n '
#Udskriv den nye CSV-fil
kat opdaterede kunder.csv
Følgende output vises efter eksekvering af scriptet:
Eksempel 3: Erstat det tomme felt i CSV-filen med 'Ingen'
Opret en Bash-fil med følgende script, der udskriver indholdet af filen 'customers.csv' efter at have ændret det tomme felt med værdien 'Ingen'. To felter er tomme i denne fil, som er nævnt i det følgende. Kommandoen 'awk' bruges i scriptet til at udskrive indholdet af filen efter at have ændret de tomme felter. Kommaet(,) er tildelt i FS- og OFS-værdierne i scriptet til at læse filen 'customers.csv' og skrive filen 'updatedcustomers.csv'. Kommandoen 'cat' bruges til at udskrive indholdet af begge filer i tabelformat.
printf 'Original fil: \n '#Udskriv det originale indhold af CSV-filen i tabelform
kat kunder.csv | kolonne -s, -t
awk 'BEGIN{FS=',';OFS=','}
{
for(felt=1;felt<=NF;felt++)
{
if($field == '') $field='Ingen'
}
}' kunder.csv > modifiedcustomers2.csv
printf ' \n Ændret fil: \n '
#Udskriv den nye CSV-fil i tabelform
kat modifiedcustomers2.csv | kolonne -s, -t
Følgende output vises efter eksekvering af scriptet:
Eksempel 4: Udskriv det samlede antal rækker og kolonner i CSV-filen
Opret en Bash-fil med følgende script, der tæller det samlede antal rækker og kolonner i filen 'customers.csv'. NR-variablen bruges til at udskrive det samlede antal rækker i filen. NF-variablen bruges til at udskrive det samlede antal felter i filen.
printf 'Original fil: \n '#Udskriv det originale indhold af CSV-filen
kat kunder.csv
ekko
ekko -n 'Rækker i alt:'
awk -F, 'SLUT{print NR}' kunder.csv
ekko -n 'Samlet kolonner:'
awk -F, 'END{print NF}' kunder.csv
Følgende output vises efter eksekvering af scriptet. Det samlede antal linjer i filen er 6, og det samlede antal felter i filen er 5, som udskrives i outputtet:
Konklusion
Metoderne til at læse en CSV-fil, ændre CSV-filen og tælle rækkerne og kolonnerne i CSV-filen ved hjælp af Bash-scriptet er vist i denne tutorial.