Grep 多行空白

Grep 多行空白

在一组文本文件(.vb)中给出以下内容:

Partial Class [A-Za-z0-9_]
  Inherits System.Web.UI.Page

End Class

我正在尝试 grep 包含这个基本上为空的代码文件的文件,以生成这些文件的列表,然后删除它们。

grep "Inherits System.Web.UI.Page[:space:]*End Class" -r

但是上面的 grep 不起作用...在阅读了 POSIX 字符类和 grep 手册页之后,我被难住了

答案1

默认情况下,grep仅匹配单行。但您可以使用-z( --null-data) 选项强制它将输入视为一组以空字符结尾的行(好吧,从技术上讲预计一组以空值终止的行,但我们提供了一组非以空值终止的行,因此将其视为多行 grep):

grep -Pzo -r "Inherits System.Web.UI.Page(\s|\n)*End Class" *

另一个选择是使用pcregrep带有-M选项的,如下所示:

pcregrep -M 'Inherits System.Web.UI.Page(\n|\s)*End Class'

相关内容