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

 更新时间:2022年09月29日 11:32:08   作者: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

这做了几件事:

  • -P打开Perl 兼容的正则表达式。
  • -z 将整个文件作为一行提供,使用“零字节”而不是换行符。这允许 grep 将整个事情作为一行处理。 (?s) 打开 PCRE_DOTALL,使. 字符匹配任何字符,包括换行符。
  • from 是首发比赛。
  • .n. 将匹配所有内容,直到to,这是结束匹配。
    总体而言,这将为脚本目的完成,但如果您自己输入,请记住很多。此外,使用该-o 标志仅打印匹配项也会打印出尾随零字节字符,这可能会导致其他问题。

使用 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跨多行查找模式匹配内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • linux脚本实现自动发送和收取邮件的设置方法

    linux脚本实现自动发送和收取邮件的设置方法

    这篇文章主要是介绍linux下通过脚本自动发送和收取邮件的设置方法,有需要的朋友可以参考下
    2013-05-05
  • Shell实现批量操作文件的方法详解

    Shell实现批量操作文件的方法详解

    这篇文章主要为大家总结了一下Shell实现批量操作文件的命令,例如:查找某文件夹下指定文件所在的路径、批量删除某个文件夹下的指定文件,感兴趣的可以了解一下
    2022-09-09
  • linux下编译boost.python简单方法

    linux下编译boost.python简单方法

    下面小编就为大家带来一篇linux下编译boost.python简单方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-03-03
  • Shell脚本定时备份清除运行系统日志的代码

    Shell脚本定时备份清除运行系统日志的代码

    写备份并清除老日志Shell脚本,并附带一个清除日志(log)的shell脚本代码,需要的朋友可以参考下
    2013-02-02
  • 分享一个可以通过命令简写执行对应命令的Shell脚本

    分享一个可以通过命令简写执行对应命令的Shell脚本

    这篇文章主要分享了一个可以通过命令简写执行对应命令的Shell脚本,帮助大家更好的理解和使用shell,感兴趣的朋友可以了解下
    2020-12-12
  • Linux系统如何修改防火墙配置

    Linux系统如何修改防火墙配置

    这篇文章主要介绍了Linux系统如何修改防火墙配置,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-11-11
  • SHELL脚本read命令的具体用法

    SHELL脚本read命令的具体用法

    这篇文章主要介绍了SHELL脚本read命令的具体用法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-05-05
  • Linux shell 提取文件名和目录名的方法

    Linux shell 提取文件名和目录名的方法

    这篇文章主要介绍了Linux shell 提取文件名和目录名的方法,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-02-02
  • Shell脚本判断用户的输入内容

    Shell脚本判断用户的输入内容

    今天小编就为大家分享一篇关于Shell脚本判断用户的输入内容,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-03-03
  • linux下mysql如何自动备份shell脚本

    linux下mysql如何自动备份shell脚本

    对任何一个已经上线的网站站点来说,数据备份都是必须的。无论版本更新还是服务器迁移,备份数据的重要性不言而喻。人工备份数据的方式不单耗费大量时间和精力,还灰常不专业。下面小编给大家分享linux下mysql自动备份shell脚本,需要的朋友可以参考下
    2015-09-09

最新评论