在simple example.html文件中提取两个字符串之间的文本
我有一个非常基本的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 同侧眼线 同侧眼线
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>