【问题标题】:Parsing Data, Selecting data after and before certain characters解析数据,在某些字符之前和之前选择数据
【发布时间】:2010-11-19 18:34:35
【问题描述】:

我是 shell 脚本和编程的新手。我正在寻找有关如何从包含数千行的纯文本文件中解析特定信息的指南。具体来说,我需要从每一行解析一个电子邮件地址。该行看起来像这样:

"1272574001.H742765P10724.host.domain.com,S=4155:Return-path: `<email@email.com>`

我想提取电子邮件地址(不包括&lt;&gt;),然后通过mysql执行更新语句,并将电子邮件地址作为值。

我可以在某个地方使用此示例来满足我的需求吗?

我将使用什么脚本工具,如何让该工具获取&lt;&gt; 之间的所有内容?

我如何(在一个脚本中)使用此值来更新数据库记录?

附言我实际上是在尝试从联系人数据库中取消订阅这些电子邮件地址..

需要运行的SQL语句是:

UPDATE contact_master SET subscribed='No' WHERE email=<value>

【问题讨论】:

  • 你是什么意思不包括$和$? $和$是什么?
  • @Sinan: 是双倍的钱。
  • 我认为他的意思是电子邮件地址周围的尖括号。我猜他不知道如何使用 Markdown 来逃避它们。

标签: perl scripting shell


【解决方案1】:

您似乎在寻找正则表达式。我建议阅读 perlre 手册页(可在线获得 here),然后执行以下操作:

($addr) = /Return-path: `<([^>]+)>`/;

【讨论】:

    【解决方案2】:
    sed -n '`s/<\([^>]\+\)>`$/\1/' inputfile | while read -r address
    do
        echo "UPDATE contact_master SET subscribed='No' WHERE email='$address'"
    done | mysql databasename
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-01-07
      • 1970-01-01
      • 2014-08-09
      • 1970-01-01
      • 1970-01-01
      • 2017-07-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多