Files
hpr_website/www/eps/hpr2679/hpr2679_bash13_ex4.sh

47 lines
1.0 KiB
Bash
Executable File

#!/bin/bash
#
# Check that the data file exists
#
data="bash13_ex4.txt"
[ -e "$data" ] || { echo "File $data not found"; exit 1; }
#
# Email addresses can be:
# 1. local-part@domain
# 2. Name <local-part@domain>
#
part1='([a-zA-Z0-9_][a-zA-Z0-9_.]+@[a-zA-Z0-9.-]+)'
part2='([^<]+)<([a-zA-Z0-9_][a-zA-Z0-9_.]+@[a-zA-Z0-9.-]+)>'
re="^($part1|$part2)$"
#
# Read and check each line from the file
#
while read -r line; do
#
# Does it match the regular expression?
#
if [[ $line =~ $re ]]; then
#declare -p BASH_REMATCH
#
# Decide which format it is depending on whether element 2 of
# BASH_REMATCH is zero length
#
if [[ -z ${BASH_REMATCH[2]} ]]; then
# Type 2
name="${BASH_REMATCH[3]}"
email="${BASH_REMATCH[4]}"
else
# Type 1
name=
email="${BASH_REMATCH[2]}"
fi
echo "Name: $name"
echo "Email: $email"
else
echo "Not recognised: $line"
fi
echo
done < "$data"