在simple example.html文件中提取两个字符串之间的文本

在simple example.html文件中提取两个字符串之间的文本,html,bash,awk,Html,Bash,Awk,我有一个非常基本的html文件,名为example.html(见下文) 但似乎有点不对劲 我还尝试了bodytag(见下文) cat example.html | awk'/^$/,/^$/{print} (结果) 同侧眼线 同侧眼线 同侧眼线 而且它工作正常 我做错了什么 提前谢谢。谢谢你。假设html是有效的xml,您可以使用: xmlstarlet sel -t -c '//div[@class="research"]' -nl example.html 同侧眼线 同侧眼线

我有一个非常基本的html文件,名为
example.html
(见下文)

但似乎有点不对劲

我还尝试了
body
tag(见下文)

cat example.html | awk'/^$/,/^$/{print}
(结果)


同侧眼线

同侧眼线

同侧眼线

而且它工作正常

我做错了什么

提前谢谢。

谢谢你。假设html是有效的xml,您可以使用:

xmlstarlet sel -t -c '//div[@class="research"]' -nl example.html  

同侧眼线

同侧眼线

同侧眼线

你。假设html是有效的xml,您可以使用:

xmlstarlet sel -t -c '//div[@class="research"]' -nl example.html  

同侧眼线

同侧眼线

同侧眼线


/^$/
不起作用,因为
是的!你有权利,但最后一个
仍在游戏中。所以问题是如何选择文本到正确的结尾
div
tag?您需要计算所有匹配的和标记。你不能用一个简单的
第一个、最后一个
模式来实现这一点,当你看到另一个
时,你必须写
awk
代码来增加一个计数器,当你看到一个
时减少它。当计数器变为0时,您已经匹配了第一个计数器。作为旁白,请避免。
/^$/
不起作用,因为
是的!你有权利,但最后一个
仍在游戏中。所以问题是如何选择文本到正确的结尾
div
tag?您需要计算所有匹配的和标记。你不能用一个简单的
第一个、最后一个
模式来实现这一点,当你看到另一个
时,你必须写
awk
代码来增加一个计数器,当你看到一个
时减少它。当计数器变为0时,表示您已经匹配了第一个。另外,请避免使用+1。您无法使用正则表达式解析HTML。(我只是想重复一下)。+1你不能用正则表达式解析HTML。(我只是想重复一下)。
cat example.html | awk '/^<div\ class="research">$/,/^<\/div>$/ { print }'
cat example.html | awk '/^<body>$/,/^<\/body>$/ { print }'
<body>
<div class="one">
    <div class="research">
        <div class="two">
            <p>Lorem ipsum...</p>
        </div>
        <div class="three">
            <p>Lorem ipsum...</p>
        </div>
        <div class="four">
            <p>Lorem ipsum...</p>
        </div>
    </div>  
</div>
</body>
xmlstarlet sel -t -c '//div[@class="research"]' -nl example.html  
<div class="research">
        <div class="two">
            <p>Lorem ipsum...</p>
        </div>
        <div class="three">
            <p>Lorem ipsum...</p>
        </div>
        <div class="four">
            <p>Lorem ipsum...</p>
        </div>
    </div>