60 lignes
1.2 KiB
Bash
Fichiers exécutables
60 lignes
1.2 KiB
Bash
Fichiers exécutables
#!/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"
|