如何在 Linux 中使用 grep 命令的排除功能
来自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

排除多个搜索条件的另一个方式是使用运算符 |,以下示例打印不包含字符串nologin和bash的行:
[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 命令的排除功能的更多相关文章
- Linux入门进阶 - 如何在Linux中使用export命令
来自:Linux迷链接:https://www.linuxmi.com/linux-export.html Linux export命令会标记哪些值需要传递给一组子进程.这是bash shell提供的 ...
- Linux中通过grep命令检索文件内容和指定内容前后几行
原文链接: https://www.linuxidc.com/Linux/2017-11/148390.htm Linux系统中搜索.查找文件中的内容,一般最常用的是grep命令,另外还有egrep命 ...
- Unix/Linux中的grep命令(转)
本文转载自:如何使用Unix/Linux grep命令——磨刀不误砍柴工系列.该博文条理很清晰. grep简介 grep在一个或多个文件中查找与模式字符串(pattern)匹配的行,并将搜索的结果打印 ...
- Linux中利用grep命令如何检索文件内容详解
前言 Linux系统中搜索.查找文件中的内容,一般最常用的是grep命令,另外还有egrep命令,同时vi命令也支持文件内容检索.下面来一起看看Linux利用grep命令检索文件内容的详细介绍. 方法 ...
- Linux 中的 grep 命令
一,grep命令有什么用 个人觉得grep命令就是一个对文本或输出进行匹配并控制输出的一个工具,看一下下面的参数,部分翻译了,有不对的地方,还请指正: grep --help 匹配模式选择: -E, ...
- Linux 中的grep命令单引号,不加任何参数以及双引号的作用
单引号: 可以说是所见即所得:即将单引号内的内容原样输出,或者描述为单引号里面看到的是什么就会输出什么.单引号''是全引用,被单引号括起的内容不管是常量还是变量者不会发生替换. 双引号: 把双引号内的 ...
- Linux中的grep 命令
介绍grep文本处理命令,它也可以解释正则. 常用选项: -E :开启扩展(Extend)的正则表达式. -i :忽略大小写(ignore case). -v :反过来(invert),只打印没有匹配 ...
- linux中的grep命令用法
原文请移驾:http://blog.csdn.net/greytree/article/details/428532 grep -- print lines matching a pattern (将 ...
- Linux中的grep命令
grep - print lines matching a pattern 参数: -a 将binary文件以text文件的方式查找 -i 忽略大小写 --color=zuto 加颜色匹配字符串 -v ...
- 如何在Linux中结合示例使用'cat'和'tac'命令
上一篇我们讲到了cat的使用示例:https://www.cnblogs.com/WeiLian1024/p/11863057.html 本篇我们将继续延续Cat讲讲Tac 本文是我们讲讲Linux技 ...
随机推荐
- Android Qcom USB Driver学习(十三)
DPM Device Policy Manager deals with the USB Power Delivery resources used by one or more ports on t ...
- 高通dump ftrace & kernelshark使用
简介 高通 ramdump 可以解析出 ftrace,方便用于追踪 快省稳 问题. kernelshark 是一个可以查看 trace event 的图形化工具,方便梳理和观察内核微观行为. trac ...
- js中常见的继承
1. 使用原型链继承 2. 通过构造函数继承 通过构造函数,创建的实例,可以访问构造函数的属性和方法,以及可以访问构造函数的原型对象 prototype 上的数据和方法 : 3. 组合继承(1 和 2 ...
- NTPShell
NTPShell 获取地址:https://github.com/aplyc1a/NTPShell 通过NTP协议来负载C2数据. 编译 gcc ntp.c -lpthread -o ntp 使用 c ...
- Nuxt.js 应用中的 restart 事件钩子详解
title: Nuxt.js 应用中的 restart 事件钩子详解 date: 2024/10/14 updated: 2024/10/14 author: cmdragon excerpt: re ...
- 如何修改word默认模板(Normal.dotm)
背景描述:平时有大量的文字编辑工作要做,其中最繁琐的就是格式问题:为了排版工整.符合要求,在每个word中都要进行大量的更改,如:字体.大小.行距.段前段后间距等......但这其中有很多的重复性工作 ...
- 【VMware VCF】更新 VCF 5.1 至 VCF 5.2 版本。
VMware Cloud Foundation(VCF)是一个由众多产品(vSphere.vSAN 以及 NSX 等)所构成的 SDDC 解决方案,这些环境中的不同组件的生命周期统一由 SDDC Ma ...
- 格点拉格朗日插值与PME算法
技术背景 在前面的一篇博客中,我们介绍了拉格朗日插值法的基本由来和表示形式.这里我们要介绍一种拉格朗日插值法的应用场景:格点拉格朗日插值法.这种场景的优势在于,如果我们要对整个实数空间进行求和或者积分 ...
- Java高并发synchronized讲解生产者消费者
问题描述 题目:两个线程操作一个变量,实现两个线程对同一个资源一个进行加1操作,另外一个进行减1操作,且需要交替实现,变量的初始值为0.即两个线程对同一个资源进行加一减一交替操作.话不多说,开干首先我 ...
- Java将html文本转成纯文本
Java将html文本转成纯文本 public static String splitAndFilterString(String input, int length) { if (input == ...