[Vienna-pm] Mehrzeiligen Text in Datei ersetzen

Roland Giersig rgiersig at cpan.org
Wed Jun 23 14:32:13 PDT 2010


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


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
>


More information about the Vienna-pm mailing list