1

我在使用 sed 表达式获取我想要的数据时遇到问题。我已经研究了一下,并尝试了一个小教程,但我可以使用一些帮助。我觉得我不能使用任何

我最接近类似主题的是“我如何在正则表达式之后打印单词但不是类似的单词? ”。

我正在尝试解析以获取信息:

<table cellpadding=""0"" cellspacing=""0"" border=""0""><tr><td>Product<br>Total: 9.99 CAD<br></td></tr><tr><td><br /> <table cellpadding=""0"" cellspacing=""0"" border=""0"" style=""font-size:10px;""><tr><td colspan=""2""><b style=""color:#777; font size:12px;"">==Payer Info==</b></td></tr><tr><td width=""70""><b style=""color:#777"">First Name</b> </td><td>Greg</td></tr><tr><td><b style=""color:#777"">Last Name</b> </td><td>Allan</td></tr><tr><td><b style=""color:#777"">E-Mail</b></td><td>gregoryallan@me.com</td></tr></table></td></tr></table>

理想情况下,我想得到这些人的名字。我必须创建一个表达式,直到>名字之前,然后获取该变量。

$ sed -n 's/^.*[Payer Info] -- grab name and stop when you hit </td>

我一直在误导,因为我暗示我是在终端上做的。这是我的第一个目标。但现在我需要在 Google Apps 脚本中使用这个 RegEx。我认为它会是相似的——但事实并非如此。非常对不起所有被我误导的人。

4

2 回答 2

0

在这里,我提取了您的名称(在您的情况下为 Greg):

sed 's_^.*First Name[^d]*d>[^>]*>\([A-Za-z]*\).*_\1_'

您可以轻松修改它以获取其他字段。

第二个名字:

sed 's_^.*Last Name[^d]*d>[^>]*>\([A-Za-z]*\).*_\1_'

电子邮件:

sed 's_^.*E-Mail[^d]*d>[^>]*>\([A-Za-z@.]*\).*_\1_'

在脚本中,您可以使用以下内容:

NAME = $(echo $STRING | sed xxx )

您将 xxx 替换为 sed 中的命令。

还有许多其他的可能性可以在脚本中捕获进程的输出。

于 2012-11-05T20:06:41.990 回答
0

这可能有效(假设格式始终与您的示例完全相同):

sed -e 's/^.*First Name<\/b> <\/td><td>\([^<]*\).*$/\1/g' sed_sample
于 2012-11-05T20:14:13.750 回答