2014-01-17 51 views
0

guys。 我試圖自動化一件事,並且當前遇到以下問題。使用perl單線程解析電子郵件列表

我的電子郵件在這樣的格式的列表:

John Doe <[email protected]>; Bill Gates <[email protected]>; Alfred Pennyworth <[email protected]>; (etc.) 

我需要解析此,並提供用作接收者mailx由逗號分隔的列表。這段代碼沒有給出期望的輸出。

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

它最後解析的電子郵件後附加逗號(例如「[email protected]」),而我只需要他們之間的逗號。

請指教。

謝謝, Alex。

+0

輸入多行匹配? –

+0

@mpapec,不,它是單線。我對多行輸入沒有任何問題,但客戶提供單行(標準Outlook格式)電子郵件列表。解決方案已經在評論中提供。 – newbie

回答

2

加入正則表達式的列表與,

perl -wne 'print join ",", /([\w\.\-][email protected][\w\.\-]+\w+)/g' $MAIL_LIST 
+0

謝謝,夥計,這工作! – newbie

2

使用此功能,打印,每個電子郵件地址之前,除了第一個

perl -wne'$c=0;while(/[\w\.\-][email protected][\w\.\-]+\w+/g){print "," if $c++;print "$&"}' 
+0

這也適用。謝謝! – newbie