grep所有字符,包括换行符

Rio*_*Rio 6 regex grep

我正在使用解析XML文件

"lalala it's a Sunday {{ Some words here, maybe
a new line }} oh boy"
Run Code Online (Sandbox Code Playgroud)

考虑到grep .字符无法识别换行符,我如何使用grep来获取"{{"和"}}"中的所有内容?

目前我有

grep '{{.*}}'
Run Code Online (Sandbox Code Playgroud)

但它只适用于同一行的东西.

Jes*_*hen 8

一种选择是删除换行符,然后删除grep,如下所示:

 cat myfile | tr -d '\n' | grep {{.*}}
Run Code Online (Sandbox Code Playgroud)

但是如果你说这是一个XML文件,为什么不使用一个利用文件固有结构的XML解析器而不仅仅是regexp?

编辑

grep regexp很贪心,你可以使用perl regexp:

cat myfile | tr -d '\n' | perl -pe 's/.*?({{.*?}})/\1\n/g' | grep {{
Run Code Online (Sandbox Code Playgroud)

这应该每行输出一个匹配.如果你有嵌套{{那么这将变得更加复杂.