使用perl one-liner解析电子邮件列表

时间:2014-01-17 08:53:07

标签: linux perl shell

我正在尝试自动化一件事,当前遇到了以下问题。

我有一份这种格式的电子邮件列表:

John Doe <John.Doe@example.com>; Bill Gates <Bill.Gates@example.com>; Alfred Pennyworth <Alfred.Pennyworth@example.com>; (etc.)

我需要解析此问题,并以逗号分隔的mailx提供收件人列表。此代码未提供所需的输出。

perl -wne'while(/[\w\.\-]+@[\w\.\-]+\w+/g){print "$&,"}' $MAIL_LIST

它在最后一次解析的电子邮件后附加逗号(例如“ Alfred.Pennyworth@example.com,”),而我只需要逗号。

2 个答案:

答案 0 :(得分:2)

使用此功能,在每个电子邮件地址(第一个

除外)之前打印,
 perl -wne'$c=0;while(/[\w\.\-]+@[\w\.\-]+\w+/g){print "," if $c++;print "$&"}'

答案 1 :(得分:2)

加入与,

匹配的正则表达式匹配列表
perl -wne 'print join ",", /([\w\.\-]+@[\w\.\-]+\w+)/g' $MAIL_LIST