#!/usr/bin/env sh # gets known e-mail adresses out of the current notmuch database # # called like `mail-searchcontacts [myadress]` # # where myaddress can be anything that connects mails to their adresses: # if directly found in the 'from': field, it will return those adresses # if no results are returned, it will switch to a more fuzzy search mode # looking through subjects, mail text, and so on for the keywords # # this can be somewhat slow for large mailboxes, in which case you probably # want to turn off fuzzy matching searchterm="$1" # make search fuzzy if 'fuzzy' is the second arg searchcmd() { if [ -n "$1" ] && [ "$2" = "fuzzy" ]; then term="and $1" elif [ -n "$1" ]; then term="and from:$1" else term="" fi notmuch address --deduplicate=address --output=count not from:marty.oehme@gmail.com "$term" | sort --numeric-sort -r | cut -f2- | sed -e 's/\(^.*\)\(<.*$\)/\2\t\1/' } results=$(searchcmd "$searchterm") if [ -z "$results" ]; then results=$(searchcmd "$searchterm" "fuzzy") fi echo "$results"