分享

grep命令详解

 ygabg2pf4rzd4x 2023-02-20 发布于福建

grep:Global search Regular Expression and Print out the line

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

-n:显示结果所在行号

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

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

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

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

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

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

-Cx:在输出的时候包含结果所在行之前和之后的指定行数,这里指之前和之后的x行,C:context

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

-x: 只显示全列符合的列

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

^ : 匹配正则表达式的以“某字符串”开头的行

$ : 匹配正则表达式的以“某字符串”结尾的行

cat a.txt
awqkkjdnsabc
abc
01233
d68823

dadsew
ddddsss
001TESTaaa
002testbbb
ddd eee abc 123
  1. -i:在搜索的时候忽略大小写

    cat a.txt |grep -i test
    001TESTaaa
    002testbbb
    
  2. -n:显示结果所在行号

    cat a.txt |grep -n test
    9:002testbbb
    
  3. -c:统计匹配到的行数,注意,是匹配到的总行数,不是匹配到的次数

    cat a.txt |grep -c -i test
    2
    
  4. -o:只显示符合条件的字符串,但是不整行显示,每个符合条件的字符串单独显示一行

    cat a.txt |grep -o test
    test
    
  5. -v:输出不带关键字的行(反向查询,反向匹配)

    cat a.txt |grep -v a
    01233
    d68823
    
    ddddsss
    002testbbb
    
  6. -w:匹配整个单词,如果是字符串中包含这个单词,则不作匹配

    cat a.txt |grep -w abc
    abc
    ddd eee abc 123
    
  7. -Ax:在输出的时候包含结果所在行之后的指定行数,这里指之后的x行,A:after

    cat a.txt |grep -A1 01233
    01233
    d68823
    
  8. 在输出的时候包含结果所在行之前的指定行数,这里指之前的x行,B:before

    cat a.txt |grep -B1 01233
    abc
    01233
    
  9. -Cx:在输出的时候包含结果所在行之前和之后的指定行数,这里指之前和之后的x行,C:context

    cat a.txt |grep -C1 01233
    abc
    01233
    d68823
    
  10. -e:实现多个选项的匹配,逻辑or关系

    cat a.txt |grep -e 01233 -e d68823
    01233
    d68823
    
  11. -x: 只显示全列符合的列

    cat a.txt | grep -x abc
    abc
    
  12. ^ : 匹配正则表达式的以“某字符串”开头的行

    cat a.txt |grep "^d"
    d68823
    dadsew
    ddddsss
    ddd eee abc 123
    
  13. $ : 匹配正则表达式的以“某字符串”结尾的行

    cat a.txt |grep "3$"
    01233
    d68823
    ddd eee abc 123
    
  14. -E:使用扩展正则表达式,而不是基本正则表达式,在使用”-E”选项时,相当于使用egrep。

    • [ ] : 单个字符,如[A] 即A 符合要求
    • [^ ] : 显示不包括括号中字符串的所有行
    • [ - ] : 范围匹配,如[A-C],即A、B、C都符合要求;如[a,b],即只有a和b符合要求
    • . :单个字符,匹配任意一个字符
    • *** :匹配“*”前面的字符,匹配0个或无数个**
    • \ :用来屏蔽一个元字符的特殊含义,使其作为单纯的一个字符
  15. 多个文件中查找

    grep "file" file_1 file_2 file_3
    
  16. 在多级目录中对文本进行递归搜索

    # 搜索当前目录下递归搜索
    grep "text" . -r -n
    # 搜索当前目录下递归搜索以.py 结尾的文件
    grep -E  "\.py$" . -r -n
    # 只在目录中所有的.php和.html文件中递归搜索字符"main()"
    grep "main()" . -r --include *.{php,html}
    # 在搜索结果中排除所有README文件
    grep "main()" . -r --exclude "README"
    

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多