#!/bin/bash . "${0%/*}/common" error=0 touch "${git_dir}"'/uids' find "${git_dir}" \ -name '.git' \ -prune \ , \ -type f \ -name '*.vcs' \ -printf '%p\n' \ | while read -r f; do uid="${f##*/}" uid="${uid%.vcs}" for key in "${keys[@]}"; do eval 'unset _'"${key}" done while read -r key value; do eval '_'"${key}"'="${value}"' done < <( sed -n ' s@\t@ @g s@\r$@@ /^BEGIN:VCARD$/,/END:VCARD$/ { /^\('"$(printf '%s\\|' "${keys[@]}" | sed 's@\\|$@@')"'\):/ { s@:@ @ p } } ' "$f" ) if [ "${_UID}" != "${uid}" ]; then >&2 printf 'uids differ: "%s" != "%s"\n' "${uid}" "${_UID}" error=1 continue fi sed -i ' /^'"${uid}"' /d ' "${git_dir}"'/uids' printf '%s\t' \ "${_UID}" \ "${_NICKNAME}" \ "${_FN}" \ "${_EMAIL}" \ "${_FCC}" \ "${_COMMENT}" \ | sed ' s@\t\+$@\n@ ' >>"${git_dir}"'/uids' done sed ' s@^\S\+\s@@ ' "${git_dir}"'/uids' \ >"${git_dir}"'/addressbook' exit ${error}