[LinuxOB] CSV - Datei

Michael Gisbers Michael at gisbers.de
So Sep 11 13:26:09 CEST 2005


Am Mittwoch, 7. September 2005 19:23 schrieb Daniel Dombrowski:
> 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.

Schön!!! Aber sehr kryptisch. Könntest Du das Script mal erklären?

;-)
-- 
 Michael Gisbers
 http://www.lugor.de

[---- Printed on recycled electrons ----]
-------------- nächster Teil --------------
Ein Dateianhang mit Binärdaten wurde abgetrennt...
Dateiname   : nicht verfügbar
Dateityp    : application/pgp-signature
Dateigröße  : 190 bytes
Beschreibung: nicht verfügbar
URL         : <http://mailman.mylinuxtime.de/pipermail/linux/attachments/20050911/94bb4c99/attachment.asc>


Mehr Informationen über die Mailingliste linux