Linux grep排除过滤输出
grep是一个强大的命令行工具,用于在一个或多个输入文件中搜索与正则表达式匹配的行并将每个匹配的行写入到标准输出
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,但内容包含单词cygnus
或magnum
等单词,在使用-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
命令打印不包含字符串nologin
或bash
的行。
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/passwd
和grep -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
的文件,并且排除proc
,boot
和sys
目录
grep -rl --exclude=*.{png,jpg} myfreax *
grep -r --exclude-dir={proc,boot,sys} gnu /
结论
grep
命令允许您在搜索文件时排除模式和目录。如果您有任何问题或反馈,请随时发表评论。