我如何在文件中搜索多行模式?

我需要找到包含特定字符串模式的所有文件。 想到的第一个解决方案是使用xargs grep管道查找:

find . -iname '*.py' | xargs grep -e 'YOUR_PATTERN'

但是如果我需要找到跨越多行的模式,我会陷入困境,因为vanilla grep找不到多行模式。


所以我发现了代表Perl Compatible Regular Expressions GREP的pcregrep

例如,你需要找到'_name'变量立即跟着'_description'变量的文件:

find . -iname '*.py' | xargs pcregrep -M '_name.*n.*_description'

提示:您需要在您的模式中包含换行符。 根据您的平台,它可能是' n', r',' r n',...


你为什么不去awk:

awk '/Start pattern/,/End pattern/' filename

这里是使用GNU grep的例子:

grep -Pzo '_name.*n.*_description'

-z / --null-data将输入和输出数据视为线序列。

链接地址: http://www.djcxy.com/p/47239.html

上一篇: How can I search for a multiline pattern in a file?

下一篇: How do YOU handle crashes in your iPhone apps?