Regex 为什么GREP不能容忍多个字符\n

Regex 为什么GREP不能容忍多个字符\n,regex,bash,grep,multiline,Regex,Bash,Grep,Multiline,我正在尝试使用GREP从一个文件中选择多行记录 这些记录看起来像那样 ########## Ligand Number : 1 blab bla bla bla blab bla ########## Ligand Number : 2 blab bla bla bla blab bla ########## Ligand Number : 3 bla bla bla <EOF> 它什么也不返回。grep似乎不能容忍连续的'\n'字符

我正在尝试使用GREP从一个文件中选择多行记录

这些记录看起来像那样

########## Ligand Number :       1
blab bla bla
bla blab bla


########## Ligand Number :       2
blab bla bla
bla blab bla


########## Ligand Number :       3
bla bla bla


<EOF>
它什么也不返回。grep似乎不能容忍连续的'\n'字符

有人能解释一下吗

另外,我已经绕过了它,先将'\n'字符翻译成'\a',然后再翻译回来。如以下示例所示:

    cat inputFile | tr '\n' '\a' | grep -Po '########## Ligand Number :\s+\d+\a.+?\a\a\a' | tr '\a' '\n'
但是我需要理解为什么GREP不能理解'\n\n\n'模式。

在PCRE正则表达式中。默认情况下不匹配换行符,并且s修改器启用类似POSIX的点行为

因此,在开始时添加?s,或替换。使用[\s\s]


在开始处添加或替换。使用[\s\s]。在PCRE正则表达式中。默认情况下不匹配换行符,并且s修饰符启用类似POSIX的点行为。@WiktorStribiżew请仔细阅读我的问题,直到结束。我很清楚地在问为什么GREP不能理解“\n\n\n”模式?计算机什么都不能理解。引擎是否匹配字符串。A.在PCRE中,正则表达式不匹配\n。您是对的。问题不是解析“\n\n”模式,而是将内部“.”解析/理解/匹配为“\n”。
    cat inputFile | tr '\n' '\a' | grep -Po '########## Ligand Number :\s+\d+\a.+?\a\a\a' | tr '\a' '\n'
(?s)^########## Ligand Number :\s+\d+.+?\n\n\n