Outra versão do Perl:
perl -pe 's/(<.)(.*)(@.)(.*)(.\..*>)/$1."*" x length($2).$3."*" x length($4).$5/e'
Exemplo:
$ perl -pe 's/(<.)(.*)(@.)(.*)(.\..*>)/$1."*" x length($2).$3."*" x length($4).$5/e' foo
John Doe <j*******@g***l.com>
John Doe <j******@h*****l.net>
Jane Doe <j****@o*****k.org>
Com sed
, a substituição dos caracteres por um número igual de *
é complicada. Consulte esta postagem SO para exemplos que envolvem sed
, perl
e awk
.