【发布时间】:2013-03-08 11:06:20
【问题描述】:
我正在尝试创建一个 BASH/Perl 脚本,该脚本将从动态 html 表中获取特定值。
这是我的页面示例
| 环境 | 发布轨道 | 工件 | 名称 | 版本号 | Cert Idn | Build Idn | 请求状态 | 更新时间 | 日志信息。 | Initiator |
|---|---|---|---|---|---|---|---|---|---|---|
| DEV03 | 2.1.0 | abpa | ecom-abpa-ear | 204 | 82113 | 171242 | 已部署 | 3/18/2013 3:10:58 PM | 日志信息 | a>CESAR |
| DEV03 | 2.1.0 | abpa | abpa_dynamic_config_properties | 20 | 82113 | 167598 | 已部署 | 3/18/2013 2:32:27 PM | 日志信息 td> | CESAR |
我的目标是从此单元格中获取此值。
“部署”
另一种看待它的方式......
检索“请求状态”列下的所有数据
“已部署”的值是动态的,可能会发生变化。
我尝试了以下方法:
sed -e 's/>/>\n/g' abpa_cesar_status.txt | egrep -i "^\s*[A-Z]+</td>
" | sed -e 's|</td>||g' | grep Deployed
但这仅适用于“已部署”
有什么想法吗?
【问题讨论】:
-
你提到了 Perl。所以使用HTML::TableExtract。
-
不要使用正则表达式解析 HTML。您无法使用正则表达式可靠地解析 HTML,并且您将面临悲伤和挫败感。一旦 HTML 与您的期望发生变化,您的代码就会被破坏。有关如何使用已经编写、测试和调试过的 Perl 模块正确解析 HTML 的示例,请参阅 htmlparsing.com/perl。
-
真的 不要使用正则表达式: stackoverflow.com/a/1732454/140740
-
您的文档输出格式不正确,是正常/预期的还是错字?这是一个格式良好的版本:pastebin.com/R8RGX1T9
-
我无法查看格式正确的版本,因为我的工作阻止了这些链接
标签: html regex bash html-parsing