regex - 通过 Shell 脚本根据表格列从 HTML 中提取文本

标签 regex linux bash shell

我需要编写一个 shell 脚本来读取 html 文件 sample.html 并基于另一个表列从一个表列中提取数据。例如,这是 HTML 代码:

<table style="BORDER-COLLAPSE: collapse"
  border="0" bordercolor="#000000"
  cellpadding="3" cellspacing="0" width="100%" height="200">
  <tr >
    <td class="fontStyleOne" width="30%">
      <div align="left">
      core6690.myserverdomain.com </div>
    </td>
    <td  class="tdfontTwo" width="30%">
      <div class="label-styler" align="left">
      admin</div>
    </td>
  </tr>
  <tr >
    <td class="fontStyleOne" width="30%">
      <div align="left">
      core6691.myserverdomain.com </div>
    </td>
    <td  class="tdfontTwo" width="30%">
      <div class="label-styler" align="left">
      secondary </div>
    </td>
  </tr>
  <tr >
    <td  class="fontStyleOne" width="30%">
      <div align="left">
      core6692.myserverdomain.com </div>
    </td>
    <td  class="tdfontTwo" width="30%">
      <div class="label-styler" align="left">
      primary </div>
    </td>
  </tr>
</table>

假设我想确定“admin”的 URL 那么结果将是 core6690.myserverdomain.com;如果我的输入是“主要”,那么输出将是“core6692.myserverdomain.com”等等......

HTML 页面有更多数据、页眉标签、页脚内容等,但我要查找的重要内容放在一个表中,该表的结构与我在代码中列出的结构完全相同...除了它有更多行,不一定像本例中那样只有 3 行。

我在这个网站上看到了 seg、grep、正则表达式、awk 和其他工具的相关答案,但是没有一个与我正在寻找的工具足够接近......而且我对任何一个都没有太多经验修改并使它们适合我的需要的方法。

有什么建议吗?提前致谢。

最佳答案

我的 Xidel如果您被允许使用其他工具,可以做到这一点。

使用 xpath:

xidel /tmp/f.html -e "//tr[td[2] = 'admin']/td[1]"

或模式匹配:

xidel /tmp/f.html -e "<tr><td>{.}</td><td>admin</td></tr>

至少您发布的摘录是这样处理的,对于较大的文件,这取决于那里还有什么。

关于regex - 通过 Shell 脚本根据表格列从 HTML 中提取文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13167683/

相关文章:

regex - 如何减少python正则表达式中的步骤?

c# - 删除字符串中的特殊字符和无效字符

linux - 了解 linux 服务器进程日志

linux - 如何修改 Perl 或 shell 脚本中的 shebang 行?

bash - 如何在 shell 脚本中使用 ctrl-D

c++ - C++ 的函数正则表达式在 linux(CentOS) 中遇到错误,但在 OSX 中遇到错误

sql - 如何优化 Google BigQuery 中重复的正则表达式提取

linux - 用户名更改后Anaconda路径断开

bash - 使用 BASH 或 awk 或 sed 或其他删除文件的前两行

linux - 规范化文件名 : remove space, 替换国际字符