【发布时间】:2017-05-01 20:53:29
【问题描述】:
我有一个类似这样的文本文件。
<tbody>
<tr>
<td>
String1
</td>
<td>
String2
</td>
<td>
String3
</td>
...
...
<td>
StringN
</td>
</tr>
</tbody>
这是我想要的输出。
<tbody>
<tr>
String1;String2;String3;... ...;StringN
</tr>
</tbody>
这是我的 BUGGY 代码。
sed '{
:a
N
$!ba
s|<td.*>\(.*\)</td>|\1|
}'
我想删除所有<td> 和</td> 标记并获取由某个字符串分隔的所有字符串(我可以稍后使用它作为分隔符来过滤这些字符串)。我使用了URL 中给出的解决方案。输出不如我预期。
这是实际代码
<tbody>
<tr>
<td>
<a href="/120.52.72.58/80">120.52.72.58:80</a>
</td>
<td>
HTTP
</td>
<td>
<span class="text-danger">Transparent</span>
</td>
<td>
<abbr title="2016-12-15 00:07:46">12h ago</abbr>
</td>
<td class="small">
<span class="text-muted">—</span>
</td>
<td>
<img src="/flags/png/cn.png" alt="China (CN)" title="China (CN)" onerror="this.style.display='none'"> <abbr title="China">CN</abbr>
</td>
<td class="small">
Beijing
</td>
<td class="small">
Beijing
</td>
<td class="small">
China Unicom IP network
</td>
<td class="small">
<span class="text-muted">—</span>
</td>
</tr>
</tbody>
【问题讨论】:
-
我建议使用 XML/HTML 解析器 (xmllint, xmlstarlet ...)。
-
为最终的 HTML 提供您预期的输出,您可以使用
xmlstarlet吗?我可以提供一个。