You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
26 lines
740 B
26 lines
740 B
#!/usr/bin/env bash |
|
|
|
addressbook="$HOME/.abook/addressbook" |
|
|
|
filter(){ |
|
if [ -n "$1" ]; then |
|
local str="$(echo "$1" | tr -d ' ' | sed 's/^0/+44/')" |
|
grep -i "$str" |
|
else |
|
cat - |
|
fi |
|
} |
|
|
|
cat "$addressbook" | |
|
grep -E '(\[[0-9]+\]|^$|name|phone|mobile)' | |
|
awk -v RS="\n\n" -v ORS="\n" '{gsub("\n","\t",$0); print $0}' | |
|
grep -E "(phone|mobile)" | while read -r line; do |
|
name="$(echo "$line" | cut -d ' ' -f 2 | cut -d '=' -f 2)" |
|
echo "$line" | tr '\t' '\n' | |
|
grep -E '(phone|mobile)' | while read -r numLine; do |
|
num="$(echo "$numLine" | cut -d '=' -f 2 | tr -d ' ' | |
|
sed 's/+44(0)/+44/' | sed 's/^0/+44/')" |
|
numType="$(echo "$numLine" | cut -d '=' -f 1)" |
|
echo -e "$name\t$num\t$numType" |
|
done |
|
done | filter "$*"
|
|
|