csv-to-vcard/csv_to_vcard.sh
2024-08-17 22:54:04 +02:00

59 lines
1.9 KiB
Bash
Executable File

#!/bin/bash
# Script:
# Version: 1.0
# Autor: Marco Morath
# Lizenz: Gnu GPLv3 <https://www.gnu.org/licenses/gpl-3.0.html>
# Anwenderhinweis:
# Das Skript erzeugt aus jeder Zeile einer CSV-Datei einen vcard-Eintrag in einer vcard-Datei.
# Somit kann aus einer CSV-Datei mit Kontakten eine importierbare vcard-Datei erzeugt werden.
# Nach dem Dateinamen ist (ggf. mit relativem Pfad) die CSV-Datei anzugeben.
# Als Ausgabe wird die Datei contacts.vcf erzeugt.
# Überprüfen, ob die Eingabedatei angegeben wurde
if [ "$#" -ne 1 ]; then
echo "Verwendung: $0 <input.csv>"
exit 1
fi
# Eingabedatei
INPUT_FILE=$1
# Ausgabedatei
OUTPUT_FILE="contacts.vcf"
# Leere die Ausgabedatei, falls sie existiert
> $OUTPUT_FILE
# Überspringe die Kopfzeile und lese die CSV-Zeilen
# +2 = Kopfzeile überspringen
# Es müssen alle CSV-Felder in der Reihenfolge der CSV-Datei eingegeben werden (ob diese genutzt werden oder nicht)
# Weitere Informationen zu den Feldbezeichnungen: https://de.wikipedia.org/wiki/VCard#Spezifikation
tail -n +2 $INPUT_FILE | while IFS=';' read -r Typ Vorname Nachname Firma Position Hinweis Schlagworte Telefon_privat Telefon_arbeit Telefon_mobil Fax Telefon_sonstige EMail_privat EMail_arbeit EMail_sonstige Strasse Ort Bundesland PLZ Land
do
cat >> $OUTPUT_FILE <<EOL
BEGIN:VCARD
VERSION:3.0
FN;CHARSET=UTF-8:$Vorname $Nachname
N;CHARSET=UTF-8:$Nachname;$Vorname;;;
KIND;CHARSET=UTF-8:$Typ
TEL;type=HOME;VOICE:$Telefon_privat
TEL;type=WORK;VOICE:$Telefon_arbeit
TEL;type=HOME;CELL:$Telefon_mobil
TEL;type=OTHER;VOICE:$Telefon_sonstige
TEL;type=HOME;FAX:$Fax
TITLE;CHARSET=UTF-8:$Position
EMAIL;type=HOME:$EMail_privat
EMAIL;type=WORK:$EMail_arbeit
EMAIL;type=OTHER:$EMail_sonstige
CATEGORIES;CHARSET=UTF-8:$Schlagworte
NOTE;CHARSET=UTF-8:$Hinweis
ORG;CHARSET=UTF-8:$Firma
ADR;type=WORK;CHARSET=UTF-8:;;$Strasse;$Ort;$Bundesland;$PLZ;$Land
END:VCARD
EOL
done
echo "VCF-Datei erfolgreich erstellt: $OUTPUT_FILE"