在一组文本文件(.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'