来自grep 是一种强大的命令行工具,用于在一个或多个输入文件中搜索与正则表达式匹配的行,并将匹配的行标准输出。在本文中介绍如何在使用 grep 搜索时排除一个或多个单词或目录。

 

排除单词或多个条件

要仅显示与搜索模式不匹配的行,请使用-v选项。例如,显示不包含nologin的行,使用下面命令:

[root@localhost ~]# grep -wv nologin /etc/passwd
root:x:::root:/root:/bin/bash
sync:x:5::sync:/sbin:/bin/sync
shutdown:x:6::shutdown:/sbin:/sbin/shutdown
halt:x:7::halt:/sbin:/sbin/halt
bob:x:1000:1000::/home/bob:/bin/bash
user01:x:1001:1001::/home/user01:/bin/bash
postgres:x:26:26:PostgreSQL Server:/var/lib/pgsql:/bin/bash

-w选项告诉 grep 仅返回-w选项后面包含单词的行。

默认情况下grep 区分大小写。这意味着大写和小写字符被视为不同的。若要在搜索时忽略大小写,请使用-i 选项调用 grep。

如果搜索字符串中包含空格,则需要将内容放在单引号或者双引号内。

若要排除两个或多个搜索条件,请使用-e选项,可根据需要多次使用-e选项:

[root@localhost ~]# grep -wv -e nologin -e bash /etc/passwd
sync:x:5::sync:/sbin:/bin/sync
shutdown:x:6::shutdown:/sbin:/sbin/shutdown
halt:x:7::halt:/sbin:/sbin/halt

排除多个搜索条件的另一个方式是使用运算符 |,以下示例打印不包含字符串nologinbash的行:

[root@localhost ~]# grep -wv 'nologin\|bash' /etc/passwd
sync:x:5::sync:/sbin:/bin/sync
shutdown:x:6::shutdown:/sbin:/sbin/shutdown
halt:x:7::halt:/sbin:/sbin/halt

还可以使用扩展正则表达式,使用选项 -E参数后,运算符|就不需要被转义了,如下图:

[root@localhost ~]# grep -Ewv 'nologin|bash' /etc/passwd
sync:x:5::sync:/sbin:/bin/sync
shutdown:x:6::shutdown:/sbin:/sbin/shutdown
halt:x:7::halt:/sbin:/sbin/halt

下面一个实例,是排除/etc/ssh/sshd_config配置文件中的以#和 空格 开头的行:

[root@localhost ~]# cat /etc/ssh/sshd_config |grep -Ev '(^#|^$)'

下面的实例,要打印出系统上所有正在运行的进程,除了以“root”用户身份运行的进程:

[root@localhost ~]# ps -ef|grep -wv root

 

排除目录或文件

要从grep搜索中排除目录,请使用--exclude-dir选项。排除目录的路径是相对于后面指定的搜索目录。

下面实例,显示如何在/etc目录中的所有文件中搜索单词keys,不包括 /etc/pki 目录:

[root@localhost ~]# grep -Rw --exclude-dir=pki keys /etc/

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

例如,要在系统中查找包含字符串 gnu 的文件,不包括 proc、boot 和 sys 目录,需要运行下面命令:

[root@localhost ~]# grep -r --exclude-dir={proc,boot,sys} gnu /

下面实例,使用--exclude选项排除多个文件,我们在当前工作目录中搜索字符串 linuxprobe,不包括以 .png 和 .jpg 结尾的文件:

[root@localhost ~]# grep -rl --exclude=*.{png,jpg} linuxprobe *

 

总    结

grep 是一种强大的命令行工具,用于在一个或多个输入文件中搜索与正则表达式匹配的行,并将匹配的行标准输出。在本文中介绍如何在使用 grep 搜索时排除一个或多个单词或目录。

如何在 Linux 中使用 grep 命令的排除功能的更多相关文章

  1. Linux入门进阶 - 如何在Linux中使用export命令

    来自:Linux迷链接:https://www.linuxmi.com/linux-export.html Linux export命令会标记哪些值需要传递给一组子进程.这是bash shell提供的 ...

  2. Linux中通过grep命令检索文件内容和指定内容前后几行

    原文链接: https://www.linuxidc.com/Linux/2017-11/148390.htm Linux系统中搜索.查找文件中的内容,一般最常用的是grep命令,另外还有egrep命 ...

  3. Unix/Linux中的grep命令(转)

    本文转载自:如何使用Unix/Linux grep命令——磨刀不误砍柴工系列.该博文条理很清晰. grep简介 grep在一个或多个文件中查找与模式字符串(pattern)匹配的行,并将搜索的结果打印 ...

  4. Linux中利用grep命令如何检索文件内容详解

    前言 Linux系统中搜索.查找文件中的内容,一般最常用的是grep命令,另外还有egrep命令,同时vi命令也支持文件内容检索.下面来一起看看Linux利用grep命令检索文件内容的详细介绍. 方法 ...

  5. Linux 中的 grep 命令

    一,grep命令有什么用 个人觉得grep命令就是一个对文本或输出进行匹配并控制输出的一个工具,看一下下面的参数,部分翻译了,有不对的地方,还请指正: grep --help 匹配模式选择: -E,  ...

  6. Linux 中的grep命令单引号,不加任何参数以及双引号的作用

    单引号: 可以说是所见即所得:即将单引号内的内容原样输出,或者描述为单引号里面看到的是什么就会输出什么.单引号''是全引用,被单引号括起的内容不管是常量还是变量者不会发生替换. 双引号: 把双引号内的 ...

  7. Linux中的grep 命令

    介绍grep文本处理命令,它也可以解释正则. 常用选项: -E :开启扩展(Extend)的正则表达式. -i :忽略大小写(ignore case). -v :反过来(invert),只打印没有匹配 ...

  8. linux中的grep命令用法

    原文请移驾:http://blog.csdn.net/greytree/article/details/428532 grep -- print lines matching a pattern (将 ...

  9. Linux中的grep命令

    grep - print lines matching a pattern 参数: -a 将binary文件以text文件的方式查找 -i 忽略大小写 --color=zuto 加颜色匹配字符串 -v ...

  10. 如何在Linux中结合示例使用'cat'和'tac'命令

    上一篇我们讲到了cat的使用示例:https://www.cnblogs.com/WeiLian1024/p/11863057.html 本篇我们将继续延续Cat讲讲Tac 本文是我们讲讲Linux技 ...

随机推荐

  1. 1. java + react 实现 HRM

    1. 云服务的三种方式 1.1 IAAS 基础设施即服务 ,只会提供基础的设施,eg:服务器,网络等 : 1.2 PAAS 平台即服务 ,提供平台,可以把自己写好的代码部署到平台上 : 1.3 SAA ...

  2. webpack中 ,有哪些常见的Loader?他们是解决什么问题的?

    1. css-loader 翻译css ,可以把sass / less 代码翻译成 css 代码 : 2. imgage-loader 加载并压缩图片文件 3. source-map-loader 加 ...

  3. 2024 年 04 月编程语言排行榜,PHP 排名创新低?

    ​ 编程语言的流行度总是变化莫测,每个月的排行榜都揭示着新的趋势.2024年4月的编程语言排行榜揭示了一个引人关注的现象:PHP的排名再次下滑,创下了历史新低.这种变化对于PHP开发者和整个技术社区来 ...

  4. HTB打靶记录-Cicada

    Nmap Scan nmap扫描一下ip nmap -sT -sV -O -Pn 10.10.11.35 Nmap scan report for 10.10.11.35 Host is up (0. ...

  5. 使用 KubeKey 在 AWS 高可用部署 Kubernetes

    作者:李耀宗 介绍 对于生产环境,我们需要考虑 Kubernetes 集群的高可用性.本文教您部署如何在多台 AWS EC2 实例快速部署一套高可用的生产环境.要满足 Kubernetes 集群服务需 ...

  6. 云原生爱好者周刊 | 使用 WASM 来写博客是什么感觉?

    开源项目推荐 zzhack zzhack 是一个静态博客框架,是一个纯正的 WASM 应用,它由 Rust & Yew 来作为技术栈进行搭建,UI 设计比较美观,大家也可以直接使用该项目的设计 ...

  7. AI五子棋_01 Python的网络通信

    AI五子棋 第一步 第一步 服务器是交战的战场,我们的AI大脑想要参战,先得找到去战场的路. 任务 1 写程序从以下网址取得下一步的指示 http://2**.2**.**.1**:9012/step ...

  8. 手把手教会你使用Markdown【从入门到精通一篇就够了】

    目录 一.Markdown是什么 二.Markdown优点 三.Markdown的基本语法 3.1 标题 3.2 字体 3.3 换行 3.4 引用 3.5 链接 3.6 图片 3.7 列表 3.8 分 ...

  9. 鸿蒙Navigation处理启动页跳转到首页问题

    在使用Navigation时时,你是否遇到了这样一个问题,Navigation加载启动页为入口,在启动页replace到首页,使首页替换换启动页,结果发现不生效,启动页依然存在. 为什么根页面启动页不 ...

  10. Windows系统DOS命令详解

    一. DOS 的历史 DOS(Disk Operating System),磁盘操作系统 1980 年,西雅图程序员蒂姆-帕特森,86-DOS 1981 年由微软公司购买并改进,更名为 MS-DOS ...