[LinuxOB] CSV - Datei

Daniel Dombrowski daniel.dombrowski at linuxob.de
Mi Sep 7 19:23:23 CEST 2005


On 2005.09.07 12:08, Michael Gisbers wrote:
> Am Mittwoch, 7. September 2005 11:58 schrieb Marc Tomec:
> > perl -p -i -e 's/\///;s/(\n|\r|\r\n)//' datei.csv
> >
> > Das Script geht aber davon aus, dass wirklich jede Zeile zu einer
> > zusammengefügt wird.
> > Erstmal wird mit s/\/// alle Slashes entfernt dann mit s/(\n|\r|\r
> > \n)// eben alle Zeilenumbrüche.
> >
> > Nicht sehr elegant, dafür klein, kompakt und bei dem Beispiel
> > funktioniert es.
> >
> > Michael Gisbers schrieb:
> > > Mal was lustiges:
> > >
> > > Eine CSV - Datei ist ein wenig zerstört. D. h. nach 80 Zeichen
> > > wird umgebrochen und am Anfang der nächsten Zeile wird das
> > > Zeichen '/' gesetzt um mitzuteilen, dass die letzte Zeile noch
> > > nicht zuende war.
> > >
> > > Wie kann ich auf einfache Weise die Zeile wieder zusammenfügen,
> > > damit ich die CSV - Datei in z. B. OoCalc einlesen kann?
> > >
> > > Beispiel:
> > >
> > > Dies;ist;der;Inhalt;einer;Zeile;und;sollte;eigentlich
> > > /;nicht umgebrochen;sein;aber;das;Programm;dass;
> > > /diese;Zeile;erzeugt;bricht;sie;einfach;um;und;ich;
> > > /muss;sie;wieder;kitten
> 
> Danke Marc für den ersten Vorschlag.
> 
> Ich glaube, daß ich versäumt hatte darauf hinzuweisen, dass ich im
> Beispiel nur ein Beispiel für EINE defekte Zeile angegeben hatte.  
> Natürlich hat die CSV - Datei mehr Zeilen.
> 
> 2. Beispiel:
> 
> Dies;ist;der;Inhalt;einer;Zeile;und;sollte;eigentlich
> /;nicht umgebrochen;sein;aber;das;Programm;dass;
> /diese;Zeile;erzeugt;bricht;sie;einfach;um;und;ich;
> /muss;sie;wieder;kitten
> Natürlich;gibt;es;auch;eine;zweite;Zeile;die;ungebrochen
> /;sein;kann;es;kann;aber;auch;eine;Zeile;geben;die;nicht
> /;umgebrochen;ist
> Wie;zum;Beispiel;hier;;;;;;;;
> Auch;dieser;Fall;muß;bedacht;werden;;;;;;

Auch wenn es bestimmt kürzer geht, so geht es auf jeden Fall auch so:

perl -e 'while(<>) { if ($_ =~ s/^\///) {chomp $l} print $l; $l = $_}  
print $l'

Datei auf STDIN reinschicken und Ergebnis auf STDOUT in Empfang nehmen.

Gruss

Daniel



Mehr Informationen über die Mailingliste linux