[Vienna-pm] Mehrzeiligen Text in Datei ersetzen

Peter Seitz p.seitz at ks-ingenieurconsult.de
Thu Jun 24 02:07:03 PDT 2010


Am 23 Jun 2010 um 23:32 hat Roland Giersig geschrieben:

> Und falls das wirklich zu einem out-of-memory führen sollte, muss man 
> halt eine Statemachine nehmen:
> 
> perl -ne 'if ($state == 2) { $state = 0; next; }; if (/^---------- End 
> of message ----------\r?\n/) { $state = 2; next; }; if (not $state) { 
> print "From -\n"; $state = 1 }; if ($state == 2) { $state = 0 }; print;' 
> < mercurymail.txt > mbox

Hallo Freunde,

Danke für die Anregungen. Obiges muß ich mir erst einmal durchdenken. 
Auch die zeilenweise-Lösungen sind gute Ansätze.

Vielen Dank.

Peter

> 
> 
> Am 23.06.2010 22:02, schrieb Roland Giersig:
> > Ah, ein klassischer Einzeiler, ein Klacks für die
> > Schweizer-Nuklear-Kettensäge der IT-Welt... :-)
> >
> > perl -pe 'BEGIN { $/="\r\n---------- End of message ----------\r\n\r\n"
> > } chomp; s/\A(\r\n)*/From unknown\r\n/;' < mercurymail.txt > mbox
> >
> > LG, Roland
> >
> > Am 23.06.2010 21:16, schrieb Peter Seitz:
> >> Hallo Perl-Freunde,
> >>
> >> ich habe ein kleines Problem, bei dem ich mit meinen Perl-Kenntnissen
> >> nicht weiterkomme.
> >>
> >> Ich habe ein Mailarchiv vom Mailserver MercuryMail (also als ASCII-Text),
> >> bei dem die inzelnen Mails mit folgenden Zeilen getrennt sind
> >>
> >> --8<---if--you--cut--here--you--will--probably--destroy--your--monitor--
> >>
> >> ---------- End of message ----------
> >>
> >> --8<---if--you--cut--here--you--will--probably--destroy--your--monitor--
> >>
> >> Das Problem ist der dreizeilige Trenner der Einzelmails. Die Zeilenenden
> >> sind in HEX als 0d 0a angegeben (also Windows).
> >>
> >> Ich möchte das Mailarchiv in ein MBOX-Format konvertieren (also den
> >> Trenner als FROM: ersetzen um anschließend das Archiv mittels MHon-Arc zu
> >> bearbeiten.
> >>
> >> Mir ist nicht klar, wie ich obige Aufgabe erschlagen kann. Soweit ich
> >> weiß kann man den Zeilentrenner für das Zeilenweise Einlesen ändern, aber
> >> wie liest man dann das in perl ein. Wenn ich es so ändere, daß ich in der
> >> Datei solange einlese bis diese Trennsequenz kommt, was passiert, wenn
> >> dann eine Mail mit 20 MB im Archiv ist. Dann wird ja alles in den
> >> Speicher gelesen. Das würde das Programm sehr in die Knie zwingen.
> >>
> >> Ich bin für Anregungen sehr dankbar, wie man das Problem erschlagen kann.
> >>
> >>
> > _______________________________________________
> > Vienna-pm mailing list
> > Vienna-pm at pm.org
> > http://mail.pm.org/mailman/listinfo/vienna-pm
> >
> _______________________________________________
> Vienna-pm mailing list
> Vienna-pm at pm.org
> http://mail.pm.org/mailman/listinfo/vienna-pm




More information about the Vienna-pm mailing list