解析数据,在特定字符之后和之前选择数据

时间:2010-11-19 18:34:35

标签: perl scripting shell

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

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

我想提取电子邮件地址(<>除外),然后通过mysql执行更新语句,并将电子邮件地址作为值。

在某个地方是否有一个我可以用来满足我的需求的例子?

我将使用哪种脚本工具,如何告诉该工具抓取<>之间的所有内容?

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

P.S。我本质上是试图从联系人数据库取消订阅这些电子邮件地址..

需要运行的SQL语句是:

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

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:0)

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