如果我想在HTML文件中匹配标记<div class="Message">
及其结束标记</div>
中包含的文本,我应该使用命令 grep 使用哪个正则表达式?
答案 0 :(得分:8)
这是使用GNU grep
的一种方式:
grep -oP '(?<=<div class="Message"> ).*?(?= </div>)' file
如果您的代码跨越多行,请尝试:
< file tr -d '\n' | grep -oP '(?<=<div class="Message"> ).*?(?= </div>)'
答案 1 :(得分:2)
只有grep才能可靠地完成它。您需要使用HTML解析器解析HTML。
如果HTML代码具有以下内容,那该怎么办?
<!--
<div class="Message">blah blah</div>
-->
你会对这个注释掉的代码进行错误的打击。
考虑使用XML::Grep
Perl模块中的xmlgrep,如下所述:Extract Title of a html file using grep
答案 2 :(得分:1)
您可以通过指定正则表达式来执行此操作:
grep -E "^<div class=\"Message\">.*</div>$" input_files
并不是说这只会打印在同一行上找到的机箱。如果您的标记跨越多行,您可以尝试:
tr '\n' ' ' < input_file | grep -E "^<div class=\"Message\">.*</div>$"