实验环境:RHEL 5.8 32Bit 

正则表达式(REGEXP:Regular Expression)

·正则表达式分为两类:

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

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

·基本的正则表达式:

    字符匹配

    . 匹配任意单个字符

        wKioL1fV_YSyKzCMAAA6csnPdG4111.png

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

        wKiom1fV_k7g5PaeAAAr0wQxEfg124.png

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

        wKioL1fV_uriob5gAAA7K4h9UM8182.png

    次数匹配

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

        wKiom1fV_36ADWz0AABJ7W2_tLE323.png

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

        wKioL1fV_7yB1D9gAAArKdKSMhE916.png

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

        wKioL1fWAFTA92goAAA_DNQLhB0704.png

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

        wKiom1fWAKjDypG9AAArP3Bgy9M556.png

    锚定:锚定的是单个单词

    ^ 锚定行首

      wKiom1fWAhqDDsmFAABOnN54tPA679.png

    $ 锚定行尾

        wKioL1fWAj_QXYi3AAAlvEB4X6Y164.png

    \<,\b 锚定单词首部

        wKiom1fWA2qgHZ3eAABiEAMvHdk878.png

    \>,\b 锚定单词尾部

        wKioL1fWA3aCInspAAAyH1n-Fho131.png

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

        

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

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

    常用option:

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

            wKioL1fWCX2g0P7dAABDlHKVHtI167.png

        -v:反向过滤

            wKioL1fWCgqC_WhdAAAuKoCMHzQ789.png

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

            wKioL1fWCorD4bVvAAAuD9TSFQQ959.png

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

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

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

            wKiom1fWDIGy3G23AABcei6vC-U776.png

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

            wKiom1fWDNTx_CbAAAAmK9sKCYA699.png

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

            wKioL1fWDSWT1rpXAABZEGtPtXc434.png

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


扩展的正则表达式

    字符匹配

    . 匹配任意单个字符

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

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

    次数匹配

    * 匹配其前的字符任意次

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

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

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

        wKiom1fWC6Ki_sFoAAAurJdibtU247.png

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

        wKiom1fWDBSQWmG7AAArx3LUeX4996.png

    位置锚定

    ^ 锚定行首

    $ 锚定行尾

    \< 锚定单词首部

    >\ 锚定单词尾部

    分组

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

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

    |:or

    举例:

        C|cat表示的是C或cat

            wKioL1fWDkSh_8ffAAAt59fcyJQ379.png

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

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

            wKioL1fWDqvA8aB8AAAu4lh1zZU603.png

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' ...

            

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

            wKiom1fWE6ijiFGjAAA9mHL1iEg160.png

        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不支持正则表达式,所以它不去搜索正则表达式,所以速度很快