Läs CSV-filen i Bash

Las Csv Filen I Bash



Den fullständiga formen av CSV är kommaseparerat värde. CSV-filen används av kodaren för många ändamål som lagrar data i semi-strukturer tabellformat. Varje rad i filen behandlas som en rad i tabellen och varje fält i raden separeras med ett kommatecken (,) i CSV-filen. Det finns många sätt i Bash att läsa CSV-filerna som förklaras i denna handledning.

Förutsättningar:

Du måste skapa en CSV-fil innan du övar på exemplet i denna handledning. Skapa en CSV-fil med namnet 'customers.csv' med följande innehåll för att kontrollera utdata från skriptet som används i den här handledningen. I den här filen, den 3 rd fält av 4 th linje och 6 th rad är tomma.

ID, namn, e-post, adress, mobil

101 , 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 < a href = 'tom' > , a > 10 Kadhalbagun Dhaka, + 8801512875634

105 , Md. Rahim,, 2 / B Dhanmondi Dhaka, + 8801700453423

Olika sätt att läsa CSV-filen i Bash

CSV-filen kan tolkas på olika sätt med hjälp av ett Bash-skript. Olika sätt att läsa filen 'customers.csv' visas i den här delen av handledningen.







Exempel 1: Läs originalinnehållet i CSV-filen

Skapa en Bash-fil med följande skript som läser hela innehållet i filen 'customers.csv' med 'while'-loopen:



#!/bin/bash

#Ange filnamnet

filnamn = 'kunder.csv'

#Läs varje rad i filen i varje iteration

medan läsa data

do

#Skriv ut raden

eko $data

Gjort < $filnamn

Följande utdata visas efter exekvering av skriptet:







Exempel 2: Läs CSV-filen genom att använda versaler i rubriken

Den första raden i filen 'customers.csv' innehåller rubriken för filen. Skapa en Bash-fil med följande skript som skriver ut innehållet i filen 'customers.csv' efter att ha skrivit den första raden i filen med versaler. Kommandot 'awk' används i skriptet för att skriva ut innehållet i filen efter att rubriken har skrivits med versaler. Komma(,) tilldelas i FS- och OFS-värdena i skriptet för att läsa filen 'customers.csv' och skriva filen 'updatedcustomers.csv'. Kommandot 'cat' används för att skriva ut innehållet i båda filerna.

printf 'Original fil: \n '

#Skriv ut det ursprungliga innehållet i CSV-filen

katt cstomers.csv

#Skapa en ny CSV-fil efter att ha versaler i rubriken

awk 'BEGIN{FS=',';OFS=','}

{

om(NR==1)

print toupper ($0)

annan

skriva ut

}'
kunder.csv > uppdaterade kunder.csv

printf ' \n Ändrad fil: \n '

#Skriv ut den nya CSV-filen

katt uppdaterade kunder.csv

Följande utdata visas efter exekvering av skriptet:



Exempel 3: Ersätt det tomma fältet i CSV-filen med 'Ingen'

Skapa en Bash-fil med följande skript som skriver ut innehållet i filen 'customers.csv' efter att ha modifierat det tomma fältet med värdet 'Ingen'. Två fält är tomma i denna fil som nämns nedan. Kommandot 'awk' används i skriptet för att skriva ut innehållet i filen efter att ha ändrat de tomma fälten. Komma(,) tilldelas i FS- och OFS-värdena i skriptet för att läsa filen 'customers.csv' och skriva filen 'updatedcustomers.csv'. Kommandot 'cat' används för att skriva ut innehållet i båda filerna i tabellformat.

printf 'Original fil: \n '

#Skriv ut det ursprungliga innehållet i CSV-filen i tabellform

katt kunder.csv | kolumn -s, -t

awk 'BEGIN{FS=',';OFS=','}

{

for(fält=1;fält<=NF;fält++)

{

if($field == '') $field='Ingen'

}

skriva ut

}'
kunder.csv > modifiedcustomers2.csv

printf ' \n Ändrad fil: \n '

#Skriv ut den nya CSV-filen i tabellform

katt modifiedcustomers2.csv | kolumn -s, -t

Följande utdata visas efter exekvering av skriptet:

Exempel 4: Skriv ut det totala antalet rader och kolumner i CSV-filen

Skapa en Bash-fil med följande skript som räknar det totala antalet rader och kolumner i filen 'customers.csv'. Variabeln NR används för att skriva ut det totala antalet rader i filen. NF-variabeln används för att skriva ut det totala antalet fält i filen.

printf 'Original fil: \n '

#Skriv ut det ursprungliga innehållet i CSV-filen

katt kunder.csv

eko

eko -n 'Totalt antal rader:'

awk -F, 'END{print NR}' kunder.csv

eko -n 'Totalt antal kolumner:'

awk -F, 'END{print NF}' kunder.csv

Följande utdata visas efter exekvering av skriptet. Det totala antalet rader i filen är 6 och det totala antalet fält i filen är 5 som skrivs ut i utdata:

Slutsats

Metoderna för att läsa en CSV-fil, ändra CSV-filen och räkna rader och kolumner i CSV-filen med Bash-skriptet visas i den här handledningen.