【问题标题】:Parse list of e-mails using perl one-liner使用 perl one-liner 解析电子邮件列表
【发布时间】:2014-01-17 08:53:07
【问题描述】:

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

我有这样格式的电子邮件列表:

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,”),而我只需要它们之间的逗号。

【问题讨论】:

  • 是输入多行吗?
  • @mpapec ,不,它是单行。我对多行输入没有任何问题,但客户提供单行电子邮件列表(标准 Outlook 格式)。 cmets中已经提供了解决方案。

标签: linux perl shell


【解决方案1】:

使用,加入正则表达式匹配列表

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

【讨论】:

    【解决方案2】:

    使用这个,在除第一个电子邮件地址之外的每个电子邮件地址前打印,

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

    【讨论】:

      猜你喜欢
      • 2011-01-22
      • 2016-11-22
      • 2014-03-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-31
      • 2013-09-02
      • 2014-06-21
      相关资源
      最近更新 更多