参数列表

–color=auto 或者 –color:表示对匹配到的文本着色显示

-i:在搜索的时候忽略大小写

-n:显示结果所在行号

-c:统计匹配到的行数,注意,是匹配到的总行数,不是匹配到的次数

-o:只显示符合条件的字符串,但是不整行显示,每个符合条件的字符串单独显示一行

-v:输出不带关键字的行(反向查询,反向匹配)

-w:精确匹配整个单词,如果是字符串中包含这个单词,则不作匹配

-Ax:在输出的时候包含结果所在行之后的指定行数,这里指之后的x行,after的简写

-Bx:在输出的时候包含结果所在行之前的指定行数,这里指之前的x行,before的简写

-Cx:在输出的时候包含结果所在行上下文的指定行数,指之前和之后的x行,context的简写

-e:实现多个选项的匹配,逻辑or关系

-q:静默模式,不输出任何信息,当我们只关心有没有匹配到,却不关心匹配到什么内容时,我们可以使用此命令,然后,使用”echo $?”查看是否匹配到,0表示匹配到,1表示没有匹配到。

-P:表示使用兼容perl的正则引擎

-E:使用扩展正则表达式,而不是基本正则表达式,在使用”-E”选项时,相当于使用egrep

-R: 表示递归,就是在当前目录找不到就去子目录找,用于从文件搜索字符

–include: 指定搜索包含的文件格式,用法 --include=test/.txt或–include={txt,.csv}

–exclude: 指定搜索排除的文件格式,用法 --exclude=test/.txt或–exclude={txt,.csv}

常用命令示例

  1. 搜索指定字符串,并显示行号

    grep -n "hello world" /home/file/test.txt
    
  2. 搜索指定字符串,显示行号,忽略大小写

    grep -in "hello world" /home/file/test.txt
    
  3. 搜索指定字符串,显示行号,忽略大小写,关键字彩色显示

    grep -in --color "hello world" /home/file/test.txt
    
  4. 搜索指定字符串,显示行号,忽略大小写,关键字彩色显示,并显示关键字所在行前后5行(-C5), C是context[上下文]的意思

    grep -inC5--color "hello world" /home/file/test.txt
    
  5. 搜索指定字符串,显示行号,忽略大小写,关键字彩色显示,并显示关键字所在行后面5行 (-A5 ),A是after[之后]的意思

    grep -inA5--color "hello world" /home/file/test.txt
    
  6. 搜索指定字符串,显示行号,忽略大小写,关键字彩色显示,并显示关键字所在行前面5行(-B5) ,B是before[之后]的意思

    grep -inB5--color "hello world" /home/file/test.txt
    
  7. 递归搜索文件夹下包含某字符串的文件

    grep -R "hello world" /home/file/*
    
  8. 递归搜索文件夹下包含某字符串的文件,并显示字符所在的行号

    grep -Rn "hello world" /home/file/*
    
  9. 递归搜索文件夹下包含某字符串的文件,并显示字符所在的行号,忽略大小写,关键字彩色显示

    grep -Rni --color "hello world" /home/file/*
    
  10. 搜索指定字符串,统计出现的行数

    grep -c "hello world" /home/file/*
    
  11. 搜索指定字符串,只显示字符串本身

    grep -o "hello world " /home/file/*
    
  12. 递归搜索文件夹下包含某字符串的文件,包含指定搜索文件格式

    grep -Rn "hello world" --include=\*.txt /home/file/*
    
  13. 递归搜索文件夹下包含某字符串的文件,排除指定文件格式

    grep -Rn --exclude=\*.csv "hello world" /home/file/**
    
  14. 搜索指定文件夹下,包含某字符串的文件,不递归查询其子目录

    grep -s "hello world" /home/file/*
    
  15. 在cat查询结果中搜索指定字符串

    cat test.txt | grep "hello world"
    
  16. 从ls -l结果中搜索包含指定字符类型的文件

    ls -l /home/file | grep *.txt