通过Bash解析表中的数据或数据

时间:2016-11-25 14:30:07

标签: regex bash parsing

我想使用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

1 个答案:

答案 0 :(得分:0)

毕竟我使用过xmllint。

xmllint --html --shell <file>

然后我执行此命令以检索所需的xpath。

grep <text>

当您在html文件中找到结构时,您可以基于xpath完全搜索您的文件。

xmllint --html --xpath <xpath> <file>

但效率更高的是使用Python和Beautiful Soup