Bash - CSV Parser

Petr

Bash - CSV Parser
« kdy: 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


Petr_Svetr

Re:Bash - CSV Parser
« Odpověď #1 kdy: 04. 05. 2013, 20:44:26 »
IFS="," - co to zkusit bez tech uvozovek?

Jakub Galgonek

Re:Bash - CSV Parser
« Odpověď #2 kdy: 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

Petr

Re:Bash - CSV Parser
« Odpověď #3 kdy: 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.

Jirka Chmiel

Re:Bash - CSV Parser
« Odpověď #4 kdy: 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