大量のメールアドレスの一部分をマスクしたい。例えば
foo.bar@example.com → foo****@example.com
ドメイン部分はそのままで、先頭3文字程度残して、残りの部分はメールアドレスの文字数が変わらないように
任意の文字で埋めたい。今は下のように変数にメールアドレスを入れて処理しているけど、ちょっと不恰好

MADR=foo.bar@example.com
MASK='*'
RC=3
DOM="${MADR##*@}"
let MC="${#MADR}"-"$RC"-"${#DOM}"-1
echo "$MADR"
echo "${MADR:0:$RC}`yes "$MASK" |tr -d '\n' |head -c"$MC"`@$DOM"

もう少し楽に処理できないでしょうか?