linux 通配符 排除,在Linux系统中用grep命令排除单词和模式、及排除目录和文件...

在本文中,我们将向您展示在使用grep搜索时如何排除一个或多个单词,模式或目录。内容有:排除单词和模式、及排除目录和文件。

018aef6a0fb6bc8a205b83c6eaf88b7e.png

前言

grep是一种功能强大的命令行工具,用于在一个或多个输入文件中搜索与正则表达式匹配的行,并将每条匹配的行写入标准输出。

排除单词和模式

要仅显示与搜索模式不匹配的行,请使用-v(或--invert-match)选项。

例如,要打印不包含字符串nologin的行,可以使用:

grep -wv nologin /etc/passwd

返回:

root:x:0:0:root:/root:/bin/bash

git:x:994:994:git daemon user:/:/usr/bin/git-shell

ywnz:x:1000:1000:ywnz:/home/ywnz:/bin/bash

-w选项告诉grep仅返回指定字符串是整个单词(由非单词字符括起来)的那些行。

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

如果搜索字符串包含空格,则需要将其用单引号或双引号引起来。

要指定两个或多个搜索模式,请使用-e选项:

grep -wv -e nologin -e bash /etc/passwd

您可以根据需要多次使用-e选项。

排除多个搜索模式的另一种选择是使用OR运算符|来加入模式。

以下示例显示不包含字符串nologin或bash的行:

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

GNU grep支持三种正则表达式语法,Basic、Extended和Perl兼容。默认情况下,grep将模式解释为基本的正则表达式,其中的元字符(例如|)失去其特殊含义,您必须使用其反斜线版本。

如果使用扩展的正则表达式选项-E,那么运算符|不应逃脱,如下所示:

grep -Ewv 'nologin|bash' /etc/passwd

您可以指定不同的可能匹配项,这些匹配项可以是文字字符串或表达式集。在下面的示例中,排除了字符串游戏在行的开始处发生的行:

grep -v "^games" file.txt

可以使用grep通过管道过滤命令的输出,并且只有与给定模式匹配的行才会打印在终端上。

例如,要打印出系统上所有正在运行的进程(以用户“root”身份运行的进程除外),可以过滤ps命令的输出:

ps -ef | grep -wv root

排除目录和文件

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

-r或-R选项之间的主要区别在于,当使用大写R调用grep时,它将跟随所有符号链接。

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

这是一个示例,显示了如何在/etc内的所有文件(不包括/etc/pki目录)中搜索字符串ywnz:

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

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

例如,要在Linux系统中查找包含字符串“gnu”的文件(不包括proc、boot和sys目录),请运行:

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

使用通配符匹配时,可以排除基本名称与--exclude选项中指定的GLOB匹配的文件。

在下面的示例中,我们正在搜索当前工作目录中的所有文件以查找字符串ywnz,但不包括以.png和.jpg目录结尾的文件:

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

结论

在Linux系统中使用grep命令可以在搜索文件时排除模式和目录,实现起来也简单。

相关主题

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值