[英]How to match content between HTML specific tags with attribute using grep?
如果我想匹配 HTML 文件中标记<div class="Message">
及其结束标记</div>
中包含的文本,我应该将哪个正则表达式与命令grep一起使用?
这是使用GNU grep
的一种方法:
grep -oP '(?<=<div class="Message"> ).*?(?= </div>)' file
如果您的标签跨越多行,请尝试:
< file tr -d '\n' | grep -oP '(?<=<div class="Message"> ).*?(?= </div>)'
您可以通过指定正则表达式来做到这一点:
grep -E "^<div class=\"Message\">.*</div>$" input_files
并不是说这只会打印在同一行上找到的外壳。 如果您的标签跨越多行,您可以尝试:
tr '\n' ' ' < input_file | grep -E "^<div class=\"Message\">.*</div>$"
仅使用 grep 无法可靠地做到这一点。 您需要使用 HTML 解析器解析 HTML。
如果 HTML 代码有类似的内容怎么办:
<!--
<div class="Message">blah blah</div>
-->
你会在那个注释掉的代码上得到错误的命中。 以下是一些其他示例,其中仅 regex 选项将使您失败。
考虑使用XML::Grep
Perl 模块中的 xmlgrep,如下所述: Extract Title of a html file using grep
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.