#!/bin/sh SCRIPT_NAME="$(realpath "$0")" SCRIPT_PATH="$(dirname "$SCRIPT_NAME")" cd "$SCRIPT_PATH" if [ -z "$FILE" ]; then printf " Usage:\\n" printf " FILE=/path/to/contacts.vcf %s\\n" "$0" exit 0 fi CACHE="cache/$(basename "$FILE").cache" if [ -f "$CACHE" ]; then cat "$CACHE" exit fi touch "$CACHE" chmod 600 "$CACHE" cat "$FILE" | while read LINE; do FLAG="$(echo "$LINE" | cut -d: -f1)" VALUE="$(echo "$LINE" | cut -d: -f2- | sed "s/\r//g" | sed "s/\n//g")" if [ "$FLAG" = "END" ]; then if [ -n "$FULL_NAME" ] && [ -n "$PHONE" ]; then printf "%s|%s\\n" "$FULL_NAME" "$PHONE" fi FULL_NAME= PHONE= export FULL_NAME export PHONE elif [ "$FLAG" = "FN" ] && [ -n "$VALUE" ]; then FULL_NAME="$VALUE" export FULL_NAME elif [ "$FLAG" = "FN;CHARSET=UTF-8;ENCODING=QUOTED-PRINTABLE" ] && [ -n "$VALUE" ]; then FULL_NAME="$(printf "$VALUE" | perl -MMIME::QuotedPrint -pe '$_=MIME::QuotedPrint::decode($_);')" export FULL_NAME elif [ "$FLAG" = "TEL;CELL;PREF" ] && [ -n "$VALUE" ]; then PHONE="$VALUE" export PHONE elif [ "$FLAG" = "TEL;CELL" ] && [ -n "$VALUE" ]; then PHONE="$VALUE" export PHONE fi done > "$CACHE" cat "$CACHE"