Não está claro o que exatamente você quer, mas que tal usar read ou awk?
echo -e "Happy Birthday:Mom Annie:12.99:197:101\nMeow Meow:Dad:11.11:1:1" | while IFS=: read -r event person date num1 num2 _ ; do echo $person; done
echo -e "Happy Birthday:Mom Annie:12.99:197:101\nMeow Meow:Dad:11.11:1:1" | awk -F: '$1 ~ /Happy.*/{print $1, $3, $NF}'
echo -e "Happy Birthday:Mom Annie:12.99:197:101\nMeow Meow:Dad:11.11:1:1" | awk -F: '$1 ~ /Happy.*/{print $0}'
Relevante: link
Considere reformular sua pergunta mostrando a entrada e a saída desejada.