我从未使用过 grep 来解析 HTML 文件,并且遇到了以下问题:
grep -Po "(?s)(<h2>.+?<!-- /endcontent -->)" input.html > output.html
-bash: !--: event not found
我也试过了……
grep -Po "(?s)(<h2>.+?\<!-- \/endcontent --\>)" input.html > output.html
…毫无效果。
有没有办法让 grep/bash 解析 HTML 文件,或者我应该使用其他应用程序?
谢谢。
编辑:shell 和 grep 之间似乎有一个技巧。搜索精确字符串“test”有效,而“t.st”和“t.st”都无效。有人知道为什么吗?
编辑:由于某种原因,“-P”选项破坏了正则表达式。
编辑:是的,“-P”选项需要将代表任何字符的点字符加倍。很奇怪。
grep -Po 't..st' input > output
答案1
尝试使用单引号'
,如下所示:
grep -Po '(?s)(<h2>.+?<!-- /endcontent -->)' input.html > output.html
当内容被双引号引起来时,Grep 的行为会有所不同。