一文教会你如何使用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系统中,通过命令行界面可以方便地修改文件名,本篇博客将介绍几种常见的方法,包括mv命令、rename命令、find和mv命令的组合、sed命令以及使用bash脚本,这些方法可以根据实际需求进行选择,提供了灵活性和多样性,需要的朋友可以参考下
    2024-01-01
  • Linux shell 之 提取文件名和目录名的一些方法总结

    Linux shell 之 提取文件名和目录名的一些方法总结

    本篇文章主要介绍了Linux shell 之 提取文件名和目录名的一些方法总结,具有一定的参考价值,有兴趣的可以了解一下。
    2017-01-01
  • Linux系统诊断之内存基础深入详解

    Linux系统诊断之内存基础深入详解

    这篇文章主要介绍了Linux系统诊断之内存基础深入详解,虽然是基础但是列举的很详细,有感兴趣的同学可以研究下
    2021-03-03
  • shell批量创建文件并重新命名的实例代码

    shell批量创建文件并重新命名的实例代码

    这篇文章主要给大家介绍了关于shell批量创建文件并重新命名的相关资料,文中还介绍了批量删除文件以及文件更名的多种方法,每种方法都给出了详细实例代码,需要的朋友可以参考下
    2021-07-07
  • Linux Shell 脚本编程入门教程

    Linux Shell 脚本编程入门教程

    Linux的Shell种类众多,常见的有:Bourne Shell(/usr/bin/sh或/bin/sh)、Bourne Again Shell(/bin/bash)、C Shell(/usr/bin/csh)、K Shell(/usr/bin/ksh)、Shell for Root(/sbin/sh),Shell是用户与Linux操作系统沟通的桥梁,对本文感兴趣的朋友一起看看吧
    2015-11-11
  • linux find命令将查找到的文件批量删除方法

    linux find命令将查找到的文件批量删除方法

    这篇文章主要介绍了linux find命令将查找到的文件批量删除,文中给大家补充介绍了Linux中find三种删除方式,常用于crontab定时任务和shell脚本,需要的朋友可以参考下
    2022-12-12
  • php编译安装常见错误大全和解决方法

    php编译安装常见错误大全和解决方法

    这篇文章主要介绍了php编译安装常见错误大全和解决方法,需要的朋友可以参考下
    2014-04-04
  • 判断输入的日期是否正确的shell脚本

    判断输入的日期是否正确的shell脚本

    这篇文章主要介绍了判断输入的日期是否正确的shell脚本,需要的朋友可以参考下
    2016-08-08
  • 简单的Linux查找后门思路和shell脚本分享

    简单的Linux查找后门思路和shell脚本分享

    这篇文章主要介绍了简单的Linux查找后门思路和shell脚本分享,本文的方法相对简单,提了一个思路和简单的Shell实现脚本,需要的朋友可以参考下
    2014-06-06
  • shell脚本实现本地文件与服务器文件同步

    shell脚本实现本地文件与服务器文件同步

    这篇文章主要介绍了本地文件与服务器文件同步shell脚本的方法,然后在文章给大家补充介绍了shell脚本备份本地服务器的文件到远程服务器的实例代码,需要的朋友可以参考下
    2017-11-11

最新评论