Fórum Root.cz

Hlavní témata => Vývoj => Téma založeno: Petr 04. 05. 2013, 17:30:46

Název: Bash - CSV Parser
Přispěvatel: Petr 04. 05. 2013, 17:30:46
Dobrý den,
snažím se napsat jednoduchý skript na parsování CSV oddělený čárkami. CSV vypadá:
Kód: [Vybrat]
jmeno1,prijmeni1,adresa1,zavod1,klub1
jmeno2,prijmeni2,adresa2,zavod2,klub2

Mně z tohoto CSV zajímají například jméno a příjmení, ostatní údaje jsou pro mě nepodstatné.
Skript vypadá:
Kód: [Vybrat]
#!/bin/bash
input="test.csv"
IFS=","
while read f1 f2
do
        echo "Jmeno:$f1"
        echo "Prijmeni:$f2"
done < "$input"

Bohužel tohle mi vypíše vše, co dělám špatně?
Děkuji
Název: Re:Bash - CSV Parser
Přispěvatel: Petr_Svetr 04. 05. 2013, 20:44:26
IFS="," - co to zkusit bez tech uvozovek?
Název: Re:Bash - CSV Parser
Přispěvatel: Jakub Galgonek 04. 05. 2013, 21:21:41
Do poslední proměnné použité v read se vždy načte zbytek řádku, přidej tedy do read jednu proměnnou:

Kód: [Vybrat]
while read f1 f2 ostatni
Název: Re:Bash - CSV Parser
Přispěvatel: Petr 04. 05. 2013, 22:02:03
Do poslední proměnné použité v read se vždy načte zbytek řádku, přidej tedy do read jednu proměnnou:

Kód: [Vybrat]
while read f1 f2 ostatni
Tohle pomohlo, děkuji to mě nenapadlo.
Název: Re:Bash - CSV Parser
Přispěvatel: Jirka Chmiel 05. 05. 2013, 20:31:31
Zdravím, na vypisování jednotlivých sloupců z CSV se dá použít taky utilita cut.

Kód: [Vybrat]
cut -d, -f1,2 test.csv