grep命令的全称是全局正则表达式打印,它是Linux中功能最强大且最常用的命令之一。
grep在一个或多个输入文件中搜索与指定模式匹配的行,并将匹配行写入标准输出。如果未指定文件,grep则从标准输入读取内容。
grep命令读取的标准输入通常是另一个命令的输出。在本教程中,我们将通过实际示例向您展示如何使用grep
命令并详细说明最常用的GNU grep
选项。
grep 命令
在开始使用grep
命令之前,让我们先回顾一下grep基本语法。grep
命令的语法形式是grep [OPTIONS] PATTERN [FILE...]
。
OPTIONS
可选参数可以零个或多个选项,PATTERN
搜索模式可以是字符串,也可以是正则表达式。
FILE
零个或多个输入文件名。要能够搜索文件,运行grep
命令的用户必须对文件具有读取权限。
grep 搜索标准输入
除了指定搜索文件之外,您还可以将另一个命令的标准输出传递给grep
命令通过管道,然后仅打印与指定模式匹配的行。
例如命令ps -ef | grep www-data
使用ps
命令列出所有进程然后通过管道传递grep
命令搜索www-data
用户运行的进程。
如果在搜索结果不多的时候,你很容易就会发现ps -ef | grep www-data
命令的标准输出还包含当前grep
进程的信息。
如果您不希望打印grep进程的信息,可将标准输出再次通过管道传递到另一个grep
实例排除grep
进程的输出。例如命令ps -ef | grep www-data | grep -v grep
。
ps -ef | grep www-data
ps -ef | grep www-data | grep -v grep
www-data 18247 12675 4 16:00 ? 00:00:00 php-fpm: pool www
root 18272 17714 0 16:00 pts/0 00:00:00 grep --color=auto --exclude-dir=.bzr --exclude-dir=CVS --exclude-dir=.git --exclude-dir=.hg --exclude-dir=.svn www-data
www-data 31147 12770 0 Oct22 ? 00:05:51 nginx: worker process
www-data 31148 12770 0 Oct22 ? 00:00:00 nginx: cache manager process