zoukankan      html  css  js  c++  java
  • grep命令的使用

    一、简介(Global Regular Expression Print)

      grep 是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印到标准输出。如果指定了多个文件,会在每一行前面显示文件名。并不影响原文件内容。

    grep可用于shell脚本,因为grep通过返回一个状态值来说明搜索的状态,如果模板搜索成功,则返回0,如果搜索不成功,则返回1,如果搜索的文件不存在,则返回2。我们利用这些返回值就可进行一些自动化的文本处理工作。


    二、格式

    grep [OPTIONS] PATTERN [FILE...]
    grep [OPTIONS] [-e PATTERN | -f FILE] [FILE...]

    三、grep 正则表达式元字符集

    1.基本集其实跟 sed 差不多,随便列一下吧:

    ^   $   .   *    []   [^]   \(..\)   \<   \>   x\{m,n\}   x\{m\}   x\{m,\}
    \w #匹配文字和数字字符,也就是[A-Za-z0-9]
    \W #\w的反置形式,匹配一个或多个非单词字符,如点号句号等
    \b #单词锁定符,如: ‘\bgrepb\’只匹配grep

    2.用于 egrep 和 grep -E 的元字符扩展集

    +           #匹配前一个字符一次或多次
    ?           #匹配前一个字符0次或1次  
    a|b|c          #可选模式,匹配a或b或c,如:love(able|rs)匹配loveable或lovers
    ()          #分组符号,如:(ov)+,匹配一个或多个ov 
    x{m},x{m,},x{m,n}  #作用同x\{m\},x\{m,\},x\{m,n\}
    
    

    3.POSIX字符类

    为了在不同国家的字符编码中保持一至,POSIX增加了特殊的字符类,如[:alnum:]是[A-Za-z0-9]的另一个写法。

    [:alunm:]    [:alpha:]    [:digit:]    [:space:]    [:upper:]     #等等

    四、grep 常用命令选项:

    -v                                #反检索,只显示不匹配的行
    -l #打印匹配模板的文件清单
    -L #打印不匹配模板的文件清单
    -n #在匹配的行前面打印行号
    -2 #grep -2 pattern filename 同时显示匹配行的上下2行
    -c #只打印匹配的行数,不显示匹配的内容
    -f #从文件中提取模板。空文件中包含0个模板,什么都不匹配
    -h #当搜索多个文件时,不显示匹配文件名前缀
    -i #忽略大小写差别
    -w #如果被\<和\>引用,就把表达式做为一个单词搜索

    五、使用举例

    测试文件:

    cat filename
    f
    f3
    f33
    f333
    f3333
    f1
    f31
    f2
    f32
    f323
    f

    1.显示包含 33 的行

    grep '33' filename
    f33
    f333
    f3333

    2.至少包含三个数字的行

    grep '[[:digit:]]\{3,\}' filename
    f333
    f3333
    f323

    3.匹配 3 一次以上的行:

    grep 'f3\{1,\}' filename

    f3
    f33
    f333
    f3333
    f31
    f32
    f323

    4.匹配 f 后跟一个以上 3 的行

    grep 'f3\{1,\}\>' filename
    f3
    f33
    f333
    f3333

     5.匹配 f 后跟偶数个 3 

    grep -E 'f(33)+\>' filename
    f33
    f3333
    Stay hungry Stay foolish
  • 相关阅读:
    indexDB的用法
    append动态生成的元素,无法触发事件的原因及解决方案
    jquery中attr()和prop()的区别
    arguments.callee
    meter标签度量衡如何改变颜色
    Nginx入门
    linux中的权限管理
    python_面向对象
    ORM
    Flask入门
  • 原文地址:https://www.cnblogs.com/xiangzi888/p/2429147.html
Copyright © 2011-2022 走看看