我需要匹配所有这些开始标记:
<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)
我相信它说:
/,然后我有这个权利吗?更重要的是,你怎么看?
我正在尝试创建一个从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)