[shell] Regel voor regel een file uitlezen

Pagina: 1
Acties:

  • Wortelsoep
  • Registratie: Juni 2001
  • Niet online
Ik wil graag een CSV-file uitlezen met een shell-script (bash) die voor elke regel bepaalde gegevens opzoekt en daar opdrachten mee kan doen. Nu loop ik echter tegen een ontzettend eenvoudig probleem aan: hoe lees ik nou regel voor regel een file in? Wat ik tot nu toe heb geprutst:

code:
1
2
3
4
5
for i in `cat database.csv`
do
echo $i

done

(de echo $i is puur om te kijken wat er gebeurt)

Een regel uit de CSV-file:
code:
1
"Piet Paaltjes",m,Drs,"Kalverstraat 103 4632BL Amsterdam","Faculteit der Informatiewetenschappen",ppaaltjes@science.uva.nl,23-09-06


Wat mijn scripje nu echter als output geeft, is het volgende:
code:
1
2
3
4
5
6
7
"Piet
Paaltjes",m,Drs,"Kalverstraat
103
4632BL
Amsterdam","Faculteit
der
Informatiewetenschappen",ppaaltjes@science.uva.nl,23-09-06


Hij geeft dus na iedere spatie een nieuwe $i (als je begrijpt wat ik bedoel). Hier heb ik dus verrekte weinig aan omdat het aantal spaties per regel best kan verschillen (dubbele voornaam, lange straatnaam, etc).

Is er een manier om gewoon de hele regel in $i te zetten? Daarna kan ik met bv. awk die gegevens er vrij gemakkelijk uitvissen om er wat nuttigs mee te doen.

  • CyBeR
  • Registratie: September 2001
  • Niet online

CyBeR

💩

code:
1
while read var; do echo $var; done < file.csv

All my posts are provided as-is. They come with NO WARRANTY at all.


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 22-01 23:51

NMe

Quia Ego Sic Dico.

Bash-vragen horen in Non-Windows Operating Systems, zie ook Waar hoort mijn topic?

PRG>>NOS

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • Wortelsoep
  • Registratie: Juni 2001
  • Niet online
Te simpele oplossing eigenlijk, bedankt! En excuus voor het posten in het verkeerde forum.

  • FiscBiker
  • Registratie: April 2003
  • Laatst online: 22:14
of (bash):
code:
1
IFS=$'\n'

Dan werkt je if meteen zoals je had gehoopt