TITLE: Converting Alpine addressbook to Mutt aliases
DATE: 2018-12-23
AUTHOR: John L. Godlee
====================================================================
Having switched to a finally usable Mutt setup, I wanted to be able
to use my addressbook from Alpine in Mutt. I'm also trying to learn
how to use regex, sed, awk, grep etc. so I thought this was a good
chance.
Alpine's .addressbook looks like:
Aidan Aidan Dude
[email protected]
Alan_H Alan Holey
[email protected] Alans really
unnecessarily long place of work
: in a city I cantt spell
Cameron Cameron Green
[email protected]
I used a shell script like this, to manipulate this format into
what Mutt likes:
#!/bin/bash
address=$(cat ~/.addressbook | grep -v "^ :")
book_length=$(echo "$address" | wc -l)
rm ~/.mutt/aliases
touch ~/.mutt/aliases
# Create alias for start of every line
alias=$(for i in `seq 1 $book_length`;
do
echo 'alias '
done)
# Get nickname from addressbook
nickname=$(echo "$address" | awk '{print $1}')
# Get full name from addressbook
# everything before @, then before last space, then remove
first word
fullname=$(echo "$address" | grep -o '^.*\S@' | gsed
's/\S*$//g' | gsed 's/^\w*\ *//')
# Get email address from addressbook
# Get email address, then add space after comma
email=$(echo "$address" | grep -E -o
"\b\S+@\S+\.[A-Za-z]{2,6}\b" | gsed 's/, */, /g')
opb=$(for i in `seq 1 $book_length`;
do
echo '<'
done)
clb=$(for i in `seq 1 $book_length`;
do
echo '>'
done)
# Paste together
paste -d '\0' <(echo "$alias") <(echo "$nickname") <(echo
"$fullname") <(echo "$opb") <(echo "$email") <(echo "$clb") | gsed
's/\s+*/ /g' > ~/.mutt/aliases
The outputted alias file looks like this:
alias Aidan Aidan Dude <
[email protected]>
alias Alan_H Alan Holey <
[email protected]>
alias Cameron Cameron Green <
[email protected]>
It also allows for multiple comma separated email addresses
I also found a way to use omnicompletion to let me search my Mutt
aliases within vim when called from Mutt, so I can add them to the
To: and CC: fields. The script is courtesy of
https://www.vim.org/scripts/script.php?script_id=2533.
[
https://www.vim.org/scripts/script.php?script_id=2533]:
Karsten%20B