参数
选项 | 说明 | 备注 |
---|---|---|
--color=auto | 对匹配到的内容着色显示 | |
-v | 显示没有被匹配到的行 | |
-i | 忽略字符大小写 | |
-n | 显示匹配到的行号 | |
-c | 统计匹配到的行数 | |
-o | 只显示匹配到的字符串 | |
-q | 静默模式 | |
-A # | 匹配后#行 | |
-B # | 匹配前#行 | |
-C # | 匹配前后各#行 | |
-E | 使用扩展正则表达式 | grep -e 'abc' -e 'def' FILENAME |
-P | 使用Perl正则表达式 | |
-e | 多个选项间的或关系 | |
-w | 匹配整个单词 |
例
显示所有包含root的行
代码语言:javascript复制grep root /etc/passwd
显示所有不包含root的行,参数-v,意思是取反
代码语言:javascript复制grep -v root /etc/passwd
忽略字符大小,参数-i
代码语言:javascript复制grep -i ROOT /etc/passwd
显示匹配到的行号,参数-n
代码语言:javascript复制grep -n root /etc/passwd
显示匹配到的行数,参数-c
代码语言:javascript复制grep -c root /etc/passwd
包含root的行,一共有两行
只显示匹配到的字符串,参数-o
代码语言:javascript复制grep -o root /etc/passwd
静默模式,参数-q
代码语言:javascript复制grep -q root /etc/passwd
包含不包含root,都不显示。 那这个参数有什么用呢?比如我想知道在一个文件当中,是否包含某一个字符串,但是我不关心包含的具体是什么,我只想知道,是包含还是不包含,只关心结果,就可以使用这个参数。 $?是一个变量,就是前面一个命令的执行结果,如果前面命令匹配到了,就为0,也就是说这个文件中包含
前面的命令没有匹配到,就为非0,这个文件中不包含aaa
显示匹配字符串的后#行
代码语言:javascript复制grep -n -A 3 root /etc/passwd
多个条件的或关系
代码语言:javascript复制grep -e root -e ftp /etc/passwd
只要包含root或包含ftp的行,,只要满足一个条件就显示出来