1

我正在尝试以该顺序查找具有“aaa”和“bbb”的行,并且这些字符串位于不同的行上。

11 aaa blah blah
bbb blah blah
blah blah blah blah
aaa blah blah blah blah
blah blah blah blah
11 bbb blah blah
blah blah blah blah

使用这种多行模式.*?(.|\n)*?,我得到了字符串之间的所有行:

11 aaa blah blah
bbb blah blah

aaa blah blah blah blah
blah blah blah blah
11 bbb blah blah

但我只需要匹配它们,然后它们就会互相跟随。例如,第一行是 aaa,第二行是 bbb。输出应该是:

11 aaa blah blah
bbb blah blah
4

1 回答 1

1

您可以使用

pcregrep -Mo '.*aaa.*\R.*bb.*' file

M选项允许pcregrep“查看”换行符并将它们与正则表达式匹配,o并将输出匹配的文本。

模式匹配

  • .*aaa.*- 一行包含aaa
  • \R- 换行符
  • .*bbb.*- 一行包含bbb
于 2021-10-18T08:52:10.210 回答