相关疑难解决方法(0)

除了XHTML自包含标记之外,RegEx匹配开放标记

我需要匹配所有这些开始标记:

<p>
<a href="foo">
Run Code Online (Sandbox Code Playgroud)

但不是这些:

<br />
<hr class="foo" />
Run Code Online (Sandbox Code Playgroud)

我想出了这个,并希望确保我做对了.我只抓住了a-z.

<([a-z]+) *[^/]*?>
Run Code Online (Sandbox Code Playgroud)

我相信它说:

  • 找一个小于,然后
  • 然后,查找(并捕获)az一次或多次
  • 然后找到零个或多个空格
  • 找到任何字符零次或多次,贪婪/,然后
  • 找到一个大于

我有这个权利吗?更重要的是,你怎么看?

html regex xhtml

1323
推荐指数
36
解决办法
270万
查看次数

如何从shell脚本中的html表中提取数据?

我正在尝试创建一个从HTML表中提取数据的BASH脚本.下面是我需要提取数据的表的示例:

<table border=1>
<tr>
<td><b>Component</b></td>
<td><b>Status</b></td>
<td><b>Time / Error</b></td>
</tr>
<tr><td>SAVE_DOCUMENT</td><td>OK</td><td>0.406 s</td></tr>
<tr><td>GET_DOCUMENT</td><td>OK</td><td>0.332 s</td></tr>
<tr><td>DVK_SEND</td><td>OK</td><td>0.001 s</td></tr>
<tr><td>DVK_RECEIVE</td><td>OK</td><td>0.001 s</td></tr>
<tr><td>GET_USER_INFO</td><td>OK</td><td>0.143 s</td></tr>
<tr><td>NOTIFICATIONS</td><td>OK</td><td>0.001 s</td></tr>
<tr><td>ERROR_LOG</td><td>OK</td><td>0.001 s</td></tr>
<tr><td>SUMMARY_STATUS</td><td>OK</td><td>0.888 s</td></tr>
</table>
Run Code Online (Sandbox Code Playgroud)

我希望BASH脚本像这样输出:

SAVE_DOCUMENT OK 0.475 s
GET_DOCUMENT OK 0.345 s
DVK_SEND OK 0.002 s
DVK_RECEIVE OK 0.001 s
GET_USER_INFO OK 4.465 s
NOTIFICATIONS OK 0.001 s
ERROR_LOG OK 0.002 s
SUMMARY_STATUS OK 5.294 s
Run Code Online (Sandbox Code Playgroud)

怎么做?

到目前为止,我已尝试使用sed,但我不知道如何使用它.表格的标题(组件,状态,时间/错误)我使用grep排除grep "<tr><td>,因此只有<tr><td>选择的行将被选择用于下一次解析(sed).这是我使用的:sed 's@<\([^<>][^<>]*\)>\([^<>]*\)</\1>@\2@g' 然后<tr>标签仍然保留,也不会分离字符串.换句话说,这个脚本的结果是:

<tr>SAVE_DOCUMENTOK0.406 s</tr>
Run Code Online (Sandbox Code Playgroud)

我正在处理的脚本的完整命令是:

cat $FILENAME | grep "<tr><td>" …
Run Code Online (Sandbox Code Playgroud)

html regex shell sed html-parsing

11
推荐指数
4
解决办法
5万
查看次数

标签 统计

html ×2

regex ×2

html-parsing ×1

sed ×1

shell ×1

xhtml ×1