码迷,mamicode.com
首页 > 系统相关 > 详细

菜鸟的Linux之路1->egrep及其正则表达式

时间:2016-07-17 18:12:59      阅读:296      评论:0      收藏:0      [点我收藏+]

标签:linux

 正则表达式(REGEXP:Regular Expression)

正则表达式分为两类:

    1,基本的正则表达式。Basic REGEXP

    2,扩展的正则表达式。Extened REGEXP

基本的正则表达式:

    字符匹配

    . 匹配任意单个字符

    []:匹配指定范围内的任意单个字符

    [^]:匹配指定范围外的任意单个字符

    次数匹配

    * 表示其前的字符匹配任意次

    \? 表示其前的字符匹配0或者1次

    \{m,n\} 表示匹配次数至少m次,至多n次,n可以省略表示没有匹配次数的上限

    .* 表示匹配任意长度的任意字符

    锚定:锚定的是单个单词

    ^ 锚定行首

    $ 锚定行尾

    \<,\b 锚定单词首部

    \>,\b 锚定单词尾部

    \(\) 用作后向引用->\1,\2,\3,...

grep命令:使用基本正则表达式定义的模式来过滤文本的命令

    格式:grep [option] Pattern file...

    常用option:

        -i:忽略匹配到的字符的大小写

        -v:反向过滤

        -o:只显示匹配到的字符串,而不是整行都显示

        --color:显示匹配到的文本的颜色

        -E:使用扩展的正则表达式

        -A(After) #:当某一行被grep命令匹配到之后,不但显示这一行的内容,这一行之后的#行也会被显示出来

        -B(Before) #:当某一行被grep命令匹配到之后,不但显示这一行的内容,这一行之前的#行也会被显示出来

        -C(Context:上下文) #:当某一行被grep命令匹配到之后,不但是显示出这一行的内容,这一行之前和之后的#行都会被显示出来

    默认情况下,正则表达式工作在贪婪模式下


扩展的正则表达式

    字符匹配

    . 匹配任意单个字符

    [] 匹配指定范围内的任意单个字符

    [^] 匹配指定范围外的任意单个字符

    次数匹配

    * 匹配其前的字符任意次

    ? 匹配其前的字符0次或者1次

    + 匹配其前的字符至少一次 = \{1,\}

        举例:grep --color -E ‘[[:space:]]+‘ ... 表示过滤出文本中,至少以一个空白字符开头的行

    {m,n} 表示匹配次数至少m次,至多n次,扩展正则表达式的花括号不需要加反斜线

    位置锚定

    ^ 锚定行首

    $ 锚定行尾

    \< 锚定单词首部

    >\ 锚定单词尾部

    分组

    ():分组->\1,\2,\3,...

    或者|是扩展正则表达式中的特殊字符

    |:or

    举例:

        C|cat表示的是C或cat

        如果想要实现Cat或cat的效果的话,得使用分组

            ‘(C|c)at‘即可实现

egrep = grep -E 扩展的正则表达式

    举例:取出文件中1-255的整数

        egrep --color ‘\b([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\b‘ ...

        \. \是转译符,转译符的作用是让元字符表示它本身的意义,而不是元字符的意义,它就表示一个点

        egrep --color ‘(\b([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\b){#}...‘

        表示的是将前面()中的内容重复执行{}中的#次


IP地址:

ipv4->

    有五类地址,分别为A类,B类,C类,D类,E类,对我们有用的只有ABC三类,剩余两类是用来做研究使用的

    A类:IP的第一段从1-127

    B类:IP的第一段从127-191

    C类:IP的第一段从192-223


grep命令有三个,除了grep、egrep之外还有一个fgrep命令

    grep默认情况下只支持基本正则表达式的命令

    egrep是支持扩展正则表达式的命令

    fgrep = fast grep 快速grep

        grep做模式匹配去搜索文本的时候会浪费大量的CPU时钟周期,而当你使用fgrep的时候,模式中的任何字符都会被当做字符本身去匹配,fgrep不支持正则表达式,所以它不去搜索正则表达式,所以速度很快

     

        

    

    

本文出自 “菜鸟的技术文档” 博客,请务必保留此出处http://zhubo.blog.51cto.com/11395641/1827128

菜鸟的Linux之路1->egrep及其正则表达式

标签:linux

原文地址:http://zhubo.blog.51cto.com/11395641/1827128

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!