Sifting out mail addresses with grep and regex

Hi there from a newbie.

So, I have this huuuge portion of mail addresses with names interlaced.. looks like:

"name1" <mail1@domain1.com>, "name2" <mail2@domain2.com> ... 

Sometimes there are no names, just mailaddress. My thought was to use regex with grep. I saved the list in file ma and tried the command

cat ma | grep -ioE \<[.*]\>

then I got no output. I fiddled around a little and gave the command

cat ma | grep -ioE \<*.\>

which resulted in a lot of "e> e> m> e> m>m>" each on a new line. So what I see here is the last character of the mail address along with the >. Not far from the wanted result but still not correct. The command doesn't make any sense to me. I'm completely puzzled! Where am I going wrong???

Please help me!
/Lasse

Hello dr_xemacs,

Could you please try following once.

awk '{while(match($0,/<[^>]*>/)){print substr($0,RSTART+1,RLENGTH-2);$0=substr($0,RSTART+RLENGTH)}}'  Input_file

Thanks,
R. Singh

Mayhap sth. like

echo "name1 <mail1@domain1.com>, name2 <mail2@domain2.com>  " | grep -ioE "<[^>]*>"
<mail1@domain1.com>
<mail2@domain2.com>