设为首页 收藏本站
查看: 347|回复: 0

[经验分享] 基本正则表达式grep命令使用

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-7-6 09:05:13 | 显示全部楼层 |阅读模式
grep(Global search REgular expression and Print out the line.)是一个文本搜索工具,根据用户指定的文本模式(搜索条件)对目标文件进行逐行搜索,显示能匹配到的行。
使用man命令查看grep使用语法格式:
grep [OPTIONS] PATTERN [FILE...]
grep [OPTIONS] [-e PATTERN | -f FILE] [FILE...]

其中option为grep命令的选项,pattern为要匹配的简单字符串或携带特殊字符的模式字符串,file为文件列表,可有多个文件。  

例如:   ls /etc | grep '*p'  查找输入内容中含有字母p

         
         linux针对grep查询结果输入时高亮显示参数设置:alias grep='grep --color=auto'

      正则表达式:
         是一类字符所书写的模式,其中许多字符不表示其字面意义,而是表达控制或通配等功能;
          元字符:不表示其字面意义,而用于额外功能性描述
               
       基本正则表达式的元字符:
    1、 字符匹配:
             .:匹配单个字符  grep 'r..t' /etc/passwd
             []:匹配指定范围内的任意单个字符
             [0-9],[[:digit:]]:  所有数字
             [a-z],[[:lower:]]:  所有小写字母
             [A-Z],[[:upper:]]:  所有大写字母
             [[:space:]]  :空白字符
             [[:punct:]]  :特殊字符,标点符号
             [[:alpha:]]  :所有大小写字母
             [[:alnum:]]  :所有数字字母
             [^]:取反
    2、  次数匹配元字符:用于实现指定其前面的字符所能够出现的次数
         *:任意长度,它前面的字符可以出现任意次
            例如:x*y
               xxy,xyy,y,
         \?:0次或1次,它前面的字符是可有可无的
            例如:x\?y
              xy,y,ay
          \{m\}:m次,它前面的字符要出现m次
               例如:x\{\2}y
               xy,xxy,y,xxxxy匹配子串
          \{m,n\}:至少m次,至多n次
               例如:x\{2,5}   
                  xy,y,xxy
          \{m,\}:至少m次
          \{0,m\}:至多n次

          .*:任意长度的任意字符

             工作于贪婪模式:尽可能多的去匹配
       3、 位置锚定:
            ^:行首锚定
               写在模式最左侧
            $:行尾锚定
               写在模式最右侧
            ^$: 空白行    grep '^$'  /etc/issue | wc -l

            不包含特殊字符的连续字符组成的串叫单词:
            \<:词首,出现于单词左侧,\b
              \<char
            \>:词尾,出现于单词右侧,\b  
              char\>         
            \<char\>:前后都锚定

         4、分组:
            \(\)
             例如:\(ab\)*  
             分组中的模式匹配到的内容,可由正则表达式引擎记忆在内存中,

          5、引用:
               例如\(ab\(x\)y\).*\(mn\)
               有编号:自左而右的左括号,以及与其匹配的右括号
               \(a\(b\(c\)\)mn\(x\)\).*\1

             \#:引用第n个括号所匹配到的内容,而非模式本身

                例如:
                \(ab\?c).*\1
                        
         grep命令选项:
            -v:反向选取       例如: grep -v '^$' /etc/issue
            -o:仅显示匹配到的字串,而非字串所在的行
            -i:ignore-case,忽略字符大小写
            -E:支持使用扩展正则表达式
            -A #  前一行
            -B #  后一行
            -C #  显示上下文
            --color=auto 将pattern在匹配行中高亮输出
         注意:
        (1).选项区分大小写
        (2).多个选项可以一起使用


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-83636-1-1.html 上篇帖子: redhat5.5 openldap server 配置搭建 下篇帖子: Linux dhcp服务器配置 表达式
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表