0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何使用grep对标准输出进行过滤

CHANBAEK 来源:myfreax 作者:myfreax 2022-12-12 17:30 次阅读

grep命令的全称是全局正则表达式打印,它是Linux中功能最强大且最常用的命令之一。

grep在一个或多个输入文件中搜索与指定模式匹配的行,并将匹配行写入标准输出。如果未指定文件,grep则从标准输入读取内容。

在本教程中,我们将向您展示如何使用grep对标准输出进行过滤,排除 。这其中包括排除不匹配的行,排除目录和文件等。

grep 反转匹配

要仅打印与搜索模式不匹配的行,可以使用grep命令的-v--invert-match选项进行反转的匹配。

注意grep会区分大小写。这意味着大写和小写被视为不同的字符。要在搜索时忽略大小写,使用-i选项调用grep

如果搜索字符串包含空格,只需要将其括在单引号或双引号中。grep就会搜索空格,你也可以使用正则表达式表示空格的匹配。

例如命令ps aux | grep fnord | grep -v grep 在搜索进程的时候排除自身的进程。

ps aux | grep fnord | grep -v grep

grep 排除单词

-w选项用于匹配整个单词,例如你要搜索gnu,但内容包含单词cygnusmagnum等单词,在使用-w选项时将不会这些单词,仅仅匹配单词gnu

要排除单词可以组合使用grep命令的-wv选项。例如命令grep -wv nologin etc/passwd将会要打印不包含nologin行。

也可以使用grep命令-e选项同时排除多个单词。例如命令grep -wv -e nologin -e bash etc/passwd

排除多个单词的另一个选项是使用OR运算符|。例如命令grep -wv 'nologin\\|bash' etc/passwd命令打印不包含字符串nologinbash 的行。

grep -wv nologin etc/passwd
grep -wv -e nologin -e bash etc/passwd
grep -wv 'nologin\\|bash' etc/passwd

grep 排除正则表达式

GNUgrep支持三种正则表达式语法,Basic、Extended和Perl-compatible。默认情况下,grep将模式解释为Basic正则表达式。

当你在正则表达式中使用使用OR运算符|时,必须使用反斜杠\\进行转义。因为shell会将|解释Linux管道。

如果你使用的扩展正则表达式,则|不不需要转义,即不需要反斜杠\\-E选项指示grep命令使用扩展正则表达式。

例如命令grep -Ewv 'nologin|bash' etc/passwdgrep -wv 'nologin\\|bash' etc/passwd是等效的,前者使用的是扩展表达式,后者使用基本正则表达式。

grep -Ewv 'nologin|bash' etc/passwd

grep -wv 'nologin\\|bash' etc/passwd

grep 排除目录和文件

有时,当使用-r-R选项执行递归搜索目录或者文件时,您可能希望从搜索结果中排除指定的目录。

-r-R选项之间的主要区别在于,当使用大写字母R运行grep命令时,它将追踪所有符号链接文件。

grep命令的--exclude-dir选项允许排除多个文件与目录。排除目录的路径是相对于搜索的起始目录。

例如命令grep -R --exclude-dir=pki myfreax /etc将会在/etc目录中搜索包含字符串myfreax的文件,但不包括etc/pki目录。

grep -R --exclude-dir=pki myfreax /etc

grep 排除多个文件与目录

如果要排除多个目录,请将排除的目录括在大括号中,并用逗号分隔,不要有空格。

在使用通配符匹配时,您可以使用grep命令--exclude选项并指定的GLOB来排除不需要结果。

例如命令grep -rl --exclude=*.{png,jpg} myfreax *将会在当前工作目录搜索包含字符串myfreax的文件,但不包括以.png.jpg目录结尾的文件。

命令grep -r --exclude-dir={proc,boot,sys} gnu /在你的Linux系统的根目录/ 开始搜索包含字符串GNU的文件,并且排除procbootsys目录

grep -rl --exclude=*.{png,jpg} myfreax *

grep -r --exclude-dir={proc,boot,sys} gnu /

结论

grep命令允许您在搜索文件时排除模式和目录。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Linux
    +关注

    关注

    87

    文章

    10990

    浏览量

    206738
  • 命令
    +关注

    关注

    5

    文章

    638

    浏览量

    21849
  • grep
    +关注

    关注

    0

    文章

    22

    浏览量

    4681
收藏 人收藏

    评论

    相关推荐

    如何对集成电路模拟输入和输出进行高压瞬变保护

    本文将要解决的两个问题:(1) 如何依据 IEC 61000-4-2、IEC 61000-4-4 和 IEC 61000-4-5 标准的规定,对集成电路模拟输入和输出进行高压瞬变保护;(2) 如何设计系统输入输出保护电路。
    的头像 发表于 04-10 08:45 1.1w次阅读
    如何对集成电路模拟输入和<b class='flag-5'>输出进行</b>高压瞬变保护

    12个 Linux 中 grep 命令的超级用法实例

    library首先,我们运行dpkg -l列出你系统上安装的.deb包。接着,我们使用管道将输出结果传输给命令grep -i python,这一步可以简单解释为把结果传输给grep然后过滤
    发表于 05-12 08:00

    如何从SOF,EOL,DE和数据作为输出进行解码

    我可以获得任何参考设计,用于解码来自传入视频的嵌入式同步,1080 * 1920输入视频已同步SAV / EAV代码,我需要从SOF,EOL,DE和数据作为输出进行解码。
    发表于 07-17 09:48

    linux grep命令详解

    !  # 这样可以让你将关键字前后数据捉出来进行分析啦!  根据文件内容递归查找目录  # grep ‘energywise’ * #在当前目录搜索带'energywise'行的文件  # grep -r
    发表于 03-31 10:05

    一个稳压器对其电压电流的输出进行管理

    电源管理芯片可以为多设备供电,但是这些设备电压电流有所同。那么此时就需要一个稳压器对其电压电流的输出进行管理。Linux世界将其抽象成模型即为`regulator`。
    发表于 11-15 08:00

    如何对printf函数的输出进行重定向呢

    怎样去使用printf函数打印基本的显示信息呢?如何对printf函数的输出进行重定向呢?
    发表于 11-30 07:29

    怎样通过三路PWM输出进行RGB灯调色呢

    怎样通过三路PWM输出进行RGB灯调色呢?其原理是什么?
    发表于 03-09 07:01

    热电偶输出进行数字转换的电路

    热电偶输出进行数字转换的电路
    发表于 03-18 09:25 1582次阅读
    热电偶<b class='flag-5'>输出进行</b>数字转换的电路

    grep学习笔记

    grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能
    发表于 11-07 15:37 7次下载

    医用防护口罩过滤测试仪的测试原理及测试标准

      医用防护口罩过滤测试仪能模拟口罩或滤材实际使用环境,基于标准要求的油雾和盐雾方法进行过滤效率及过滤阻力测试。
    发表于 03-21 11:41 2175次阅读

    Linux中的Grep正则表达式详细资料说明

    grep是Linux中用于文本处理的最有用和功能最强大的命令之一。 grep在一个或多个输入文件中搜索与正则表达式匹配的行,并将每条匹配的行写入标准输出
    的头像 发表于 06-21 11:39 2053次阅读

    grep命令常用的选项详解

    说明:在Rocky8系统中,grep默认帮我们把匹配到的字符串标注了红色,这点还是挺贴心的。其实大家可以用which命令看一下grep,你会发现grep其实是grep --color=
    的头像 发表于 11-30 11:43 3348次阅读

    如何使用grep命令

    grep命令的全称是全局正则表达式打印,它是Linux中功能最强大且最常用的命令之一。
    的头像 发表于 12-06 16:43 1682次阅读

    ZMID5201 使用模拟输出进行校准和线性化的手册

    ZMID5201 使用模拟输出进行校准和线性化的手册
    发表于 03-14 19:25 0次下载
    ZMID5201 使用模拟<b class='flag-5'>输出进行</b>校准和线性化的手册

    ZMID5201 使用模拟输出进行校准和线性化的手册

    ZMID5201 使用模拟输出进行校准和线性化的手册
    发表于 07-05 19:51 1次下载
    ZMID5201 使用模拟<b class='flag-5'>输出进行</b>校准和线性化的手册