2010-11-19 61 views
0

我是shell脚本编程和编程的新手。我正在寻找一个关于如何从一个纯文本文件中解析数千行特定信息的指南。具体而言,我需要解析每行的电子邮件地址。该行看起来是这样的:解析数据,在某些字符之前和之后选择数据

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

我想提取电子邮件地址(不包括<>),然后通过mysql用的电子邮件地址作为值执行UPDATE语句。

有没有这样一个例子,我可以用来根据我的需求?

我会使用哪些脚本工具,我该如何告诉该工具以获取<>之间的所有内容?

那么我怎么(在一个脚本中)使用这个值来更新数据库记录?

p.s.我基本上是试图从联系人数据库退订这些电子邮件地址..

需要运行的SQL语句是:

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

你是什么意思*不包括$和$ *? $和$是什么? – 2010-11-19 19:06:05

+1

@Sinan:这是钱的两倍。 – Axeman 2010-11-19 22:36:56

+0

我认为他是指电子邮件地址的尖括号。我想他无法弄清楚如何使用Markdown来逃避它们。 – 2010-11-20 07:49:02

回答

2

你似乎在寻找的正则表达式。我建议您阅读perlre手册页(可在网上here),然后做这样的事情:

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