grep 可以跨行匹配一段文本。grep 是一个强大的命令行文本搜索工具,通常用于单行匹配,但通过使用特定的选项和正则表达式,可以实现跨行匹配。
使用 -P 选项和 `PCRE(Perl 兼容正则表达式):
使用 `pcre2grep:
例子: 我的文本样本如下:
1,使用 grep -Pz '(?s)<div.*>.*</div>' a.txt 可以正常匹配 <div class > ......</div> 这段内容
前提一个把(?s) 技巧打开 PCRE_DOTALL,使点字符 . 匹配任何字符,包括换行符。加上才可以正常工作,不过通配符一定要有 . 没有点字符同样不起作用
比如把上边 grep -Pz '(?s)<div.*>.*</div>' a.txt 换成 grep -Pz '(?s)<div.*>\w+</div>' a.txt 就不起作用。
2, pcre2grep -M '(?s)<div class.*>.*</div>' a.txt 同样也需要打开 PCRE_DOTALL
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!