{{{#!vorlage Warnung Die Verwendung dieses Howto geschieht auf eigene Gefahr. Bei Problemen mit der Anleitung melde dies bitte in der dazugehörigen Diskussion und wende dich zusätzlich an den Verfasser des Howtos }}} {{{#!vorlage Hinweis Diese Howto-Anleitung wurde zuletzt von [user:Bourness:] am 05.01.2018 unter '''Ubuntu 16.04''' erfolgreich getestet. }}} = Problembeschreibung = Über die grafische Benutzeroberfläche (GUI) von Thunderbird ist es sehr einfach ein beliebiges Adressbuch manuell in eine CSV-Datei zu exportieren. Thunderbird kennt aber leider keinen entsprechenden Befehl für die Kommandozeile (CL). Dieser Umstand ist insbesondere dann ärgerlich, wenn man den Konvertierungsvorgang automatisiert per Script realisieren möchte. Einen Ausweg bietet der Mork Converter, der in diesem Howto zur Anwendung kommt. =Voraussetzungen= 1. Vor der Durchführung dieser Anleitung muss sichergestellt sein, dass die hier benutzte Ordnerstruktur (~/.thunderbird) vorhanden ist. Dies kann bei einer Standardinstallation von Ubuntu 16.04, in der Unity Desktop Version, durch das einmalige Starten von Thunderbird sichergestellt werden. 2. Der Mork Converter setzt Python 2 (Version 2.4 oder höher) voraus, was unter Ubuntu 16.04 automatisch gegeben ist. Python 3 wird zurzeit vom Mork Converter nicht unterstützt! = Problemlösung = = Schritt 1: (optional) = Das System aktualisieren. {{{ sudo apt update sudo apt upgrade }}} = Schritt 2: = Python Lex-Yacc installieren. {{{ sudo apt install python-ply }}} = Schritt 3: = Den Mork Converter mit {{{ cd ~/Downloads wget https://github.com/KevinGoodsell/mork-converter/archive/master.zip }}} downloaden und anschließend mit {{{ unzip ./master.zip -d ~/.local/share/applications }}} entpacken. = Schritt 4: = Ab diesem Schritt beginnt der eigentliche Konvertierungsvorgang. Zunächst wechselt man mit {{{ cd ~/.local/share/applications/mork-converter-master/src }}} in das Arbeitsverzeichnis des Mork Converters. Jetzt wird per {{{ find ~/.thunderbird -name abook.mab -exec cp {} abook_save.mab \; }}}das gewünschte lokal gespeicherte Adressbuch gefunden und als Kopie unter einem abweichenden Dateinamen gespeichert. {{{#!vorlage Hinweis Möchte man ein anderes lokales Adressbuch konvertieren, so ist beim find Befehl dessen Dateiname anzugeben. (Beispiel: abook-1.mab statt abook.mab) }}} =Schritt 5:= Konvertieren der Datei (abook_save.mab). {{{ python mork --csv --outname=Adressbuch abook_save.mab }}} Damit ist die eigentliche Konvertierung abgeschlossen. Allerdings hat die erstellte CSV-Datei einen ungebräuchlichen Dateinamen, befindet sich in einem (vom Mork Converter) neu erstellten versteckten Ordner und beinhaltet noch einige unerwünschte Zeilen und Spalten. =Schritt 6:= Zum Umbenennen der Datei wechselt man mit {{{ cd ./Adressbuch }}} in den neu erstellten Ordner. Dort befinden sich zwei Dateien, von denen aber nur eine für die weitere Bearbeitung relelant ist. Mit dem Befehl {{{ mv ns:addrbk:db:row:scope:card:all-1 Adressbuch.csv }}} wird die relevante Datei in Adressbuch.csv umbenannt. =Schritt 7:= Das Entfernen der unerwünschten Zeilen und Spalten wird durch die Befehle {{{ sed '/^ns:addrbk:db:row:scope:data:all,1,,,,,,,,,,,,,,,,,,,,,,,,,/d' Adressbuch.csv >Adressbuch.tmp cut -d, -f3- Adressbuch.tmp >Adressbuch.csv }}} erreicht. Anschließend kopiert man per {{{ cp Adressbuch.csv ~/Dokumente }}} die Datei in einen schon vorhanden sichtbaren Ordner (z. B. Dokumente). Dort kann die Datei nun gefunden werden und von jeglicher Anwendung (App), die Daten im CSV-Format verarbeiten kann, genutzt werden. =Schritt 8: (optional)= Die Adressdaten innerhalb der erzeugten Datei sind leider nicht alphabetisch sortiert, was aber meist erwünscht ist. Eine individuelle Sortierung (Beispiel: erst Nachname dann Vorname) kann wie folgt realisiert werden: {{{ sed -n 1,1p Adressbuch.csv >Header.tmp tail -n +2 Adressbuch.csv >Adressbuch-1.tmp sort -t',' -k 24,24 -k 14,14 Adressbuch-1.tmp -o Adressbuch-2.tmp cat Header.tmp >Adressbuch.csv cat Adressbuch-2.tmp >>Adressbuch.csv }}} Durch den Befehl {{{ mv Adressbuch.csv ~/Dokumente }}} wird die in Schritt 7 erzeugte, bisher nicht sortierte CSV-Datei, durch die nun individuell sortierte CSV-Datei ersetzt. =Schritt 9:= Die nicht mehr benötigten temporären Dateien und Ordner müssen zwingend gelöscht werden, da sonst die Schritte 4-7 und 9 oder 4-9 nicht erneut fehlerfrei durchgeführt werden können! {{{ cd ~ rm ~/.local/share/applications/mork-converter-master/src/abook_save.mab* rm -r ~/.local/share/applications/mork-converter-master/src/Adressbuch }}} = Links = * Homepage Mork-Converter: https://github.com/KevinGoodsell/mork-converter #tag: Howto