Date Tags Linux

Heute stand ich vor dem problem, eine aus Lotus Notes exportierte datei mit emails in mein Gnome Evolution zu importieren.

Die export datei (export.txt) enthält einen Lotus Notes mailordner, die emails sind mit einem "linefeed" voneinander getrennt. Die datei ist UTF8 codiert und enthält ein sog. Byte Order Mark (BOM).

Die importfunktion von Evolution erkannte das format nicht, desshalb ging es nicht auf diese art und weise :-(

Ich habe desshalb die datei in die einzelnen emails "gesplittet" und direkt in das entsprechende maildir verzeichnis meiner Evolution installation kopiert. Hier die einzelnen schritte:

Byte Order Mark entfernen:

Und dabei gleich noch eine sicherungskopie anfertigen.

erwin@venus:/tmp> file export.txt
export.txt: UTF-8 Unicode (with BOM) text, with very long lines, with CRLF line terminators
erwin@venus:/tmp> dd if=export.txt bs=1 skip=3 of=export2.txt
90704+0 Datensätze ein
90704+0 Datensätze aus
90704 Bytes (91 kB) kopiert, 0,110384 s, 822 kB/s
erwin@venus:/tmp> file export2.txt
export2.txt: UTF-8 Unicode text, with very long lines, with CRLF line terminators

Ein paar feldnamen korrigieren:

Ich habe dann noch die namen der beiden kopfzeilen "SendTo:" bzw. "PostedDate:" in "To:" und "Date:" umbenannt, da sonst Evolution diese daten nicht richtig erkennt. Ich habe an dieser stelle nicht weiter nachgeforscht, warum die feldbezeichnungen nicht passen. Auch hätte man noch weitere felder umformatieren können, aber das hat mir soweit gereicht...

erwin@venus:/tmp> sed -i -e "s|^SendTo:|To:|g" -e "s|^PostedDate:|Date:|g" export2.txt

Datei in einzelne emails aufteilen "splitten":

Die aufteilung erfolgt durch das (linux/unix) tool "csplit", dieses teilt eine datei mit hilfe eines suchstrings ("pattern") in einzelne dateien auf. Die ergebnisdateien werden unter dem namen "xx+<aufsteigende nummer>" gespeichert. Die emails sind durch ein "linefeed"  zeichen (^L) voneinander getrennt, daraus folgt das entsprechende pattern für den csplit.

erwin@venus:/tmp> csplit export2.txt "/^L/" "{*}"
6304
1211
9479
8339
2684
3294
3173
8999
6504
3829
12300
6538
7181
1477
1576
2009
2364
1774
1474
5
erwin@venus:/tmp> ls  export* xx*
export2.txt  export.txt  xx00  xx01  xx02  xx03  xx04  xx05  xx06  xx07  xx08  xx09  xx10  xx11  xx12  xx13  xx14  xx15  xx16  xx17  xx18  xx19

Die einzelnen emaildateien (xx*) können dann in das Evolution maildir verzeichnis (z.b. $HOME/.maildir/new) kopiert werden. Damit sind sie dann im email-eingangs ordner von Evolution sichtbar und können von da aus weiter verarbeitet werden.