我想使用sed或awk通过Bash解析网站上的数据(随意改变我对处理数据的指示)。
以下是代码示例。
<tbody>
<tr>
<td class="text-left">111</td><td class="text-center">
<a href="/path1.htm">AAA</a>
</td><td class="text-center">
<a href="/path2.htm" class="tp-link-policy">BBB</a>
</td><td class="text-center">
Updated October, 2016
</td>
</tr><tr>
<td class="text-left">CCC</td><td class="text-center">
<a href="/path3.htm">
.
.
.
.
</tr>
</tbody>
通常当我在PHP中使用preg_match时,我对换行没有问题,但在Bash中我需要完全改变我对正则表达式的看法。您是否建议首先准备sed和awk可读取的数据以删除所有换行符并根据我希望使用sed或awk的数据结构以不同的方式重新创建它们?
例如,我会为每个<tr>
创建一个换行符,所以结果会是这样的?我是对的还是应该留下这种思维方式?这可行,但我觉得操纵这样的数据并不舒服。
<tbody>
<tr><td class="text-left">111</td><td class="text-center"><a href="/path1.htm">AAA</a></td><td class="text-center"><a href="/path2.htm" class="tp-link-policy">BBB</a></td><td class="text-center">Updated October, 2016</td></tr>
<tr><td class="text-left">CCC</td><td class="text-center"><a href="/path3.htm">....</tr></tbody>
输出应该是,例如:
111|AAA|BBB|Updated October, 2016
答案 0 :(得分:0)
毕竟我使用过xmllint。
xmllint --html --shell <file>
然后我执行此命令以检索所需的xpath。
grep <text>
当您在html文件中找到结构时,您可以基于xpath完全搜索您的文件。
xmllint --html --xpath <xpath> <file>
但效率更高的是使用Python和Beautiful Soup。