linux shell

关注公众号 jb51net

关闭
首页 > 脚本专栏 > linux shell > grep跨多行查找模式匹配

一文教会你如何使用grep跨多行查找模式匹配

作者:mikes zhang

grep匹配是linux的最常用的shell命令之一,这篇文章主要给大家介绍了关于如何使用grep跨多行查找模式匹配的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下

grep 是一个命令行文本搜索实用程序,能够在文件和其他类型的输入中查找模式和字符串。大多数匹配只匹配一行,但跨多行匹配通常很有用。

使用 grep 匹配多个新行

处理多行匹配是一件很困难的事情grep 。一个更好的工具是awk or sed,它们都可以自然地处理多行输入。使用两个带有逗号的表达式将匹配这两个模式之间的所有内容。

awk '/from/,/to/' file
sed -n '/from/,/to/p' file

仍然可以在 中处理此问题grep,但是该命令非常笨拙。

grep -Pz '(?s)from.*n.*to' test

这做了几件事:

使用 pcre2grep 代替(Perl 兼容的 grep)

正grep 则不是完成这项工作的最佳工具,还有一种替代方法pcre2grep ,即开箱即用地支持 Perl 兼容正则表达式,并且能够非常轻松地匹配多行正则表达式。

它可能已安装在您的系统上,但如果没有,您可以从包管理器中获取它:

sudo apt install pcre2-utils

然后,您只需要使用-M 参数运行它。

pcre2grep -M 'from(n|.)*to' file

请注意,这仍然需要您手动将“换行符或任何字符”与(n|.)* . 或者,您可以使用该(?s) 技巧打开 PCRE_DOTALL 并使点字符也匹配换行符。

pcre2grep -M '(?s)from.*to' file

总结

到此这篇关于如何使用grep跨多行查找模式匹配的文章就介绍到这了,更多相关grep跨多行查找模式匹配内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文