Grep Whitespace跨越多行


2

在一堆文本文件(.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手册页后,我很难过

Answers:


1

默认情况下, grep 只匹配单行。但你可以使用 -z--null-data )强制它将输入视为一组行的选项:

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'

grep始终将输入视为一组行。这是完整的引用 手册页 :“将输入视为一组行,每行以零字节(ASCII NUL字符)而不是换行符结束。”所以, -z 使得它将输入视为一组以null结尾的行而不是换行符终止的行。
clacke
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.