- printf '%i\t%i\t%i\ttags=%s\t%s\t%s\n' \
- "$length" "$width" "$height" \
- "$(printf %s "$tags" |sort -u |tr '\n' ,)" \
- "$comment" "$fn" \
- >>"${meta}.tmp"
- mv "${meta}.tmp" "$meta"
+ if [ ! "$deltags" ]; then
+ extags="$(printf '%s' "${newtags}" |grep -e "^-" |cut -d: -f1 )"
+ [ "$extags" ] && tags="$(printf %s\\n "$tags" |grep -vwFe "$extags")"
+ if printf %s "${newtags}" |grep -e "^-" |grep -qEe "^-[^:]+$"; then
+ tags="$(printf %s\\n "$tags" |grep -vEe '^-[^:]+$')"
+ fi
+ tags="$(printf '%s\n' "${tags},${newtags}" \
+ | tr , '\n' |sort -u |tr '\n' ,)"
+ else
+ detag="${deltags}${BR}"; while [ "$detag" ]; do
+ tags="$(printf '%s\n' "$tags" |grep -vxFe "${detag%%${BR}*}")"
+ detag="${detag#*${BR}}"
+ done
+ tags="$(printf '%s\n' "$tags" |sort -u |tr '\n' ,)"
+ fi
+ tags="${tags#,}"; tags="${tags%,}"