实验环境:RHEL 5.8 32Bit 

正则表达式(REGEXP:Regular Expression)

·正则表达式分为两类:

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

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

·基本的正则表达式:

    字符匹配

    . 匹配任意单个字符

        egrep及其正则表达式_第1张图片

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

        egrep及其正则表达式_第2张图片

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

        

    次数匹配

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

        egrep及其正则表达式_第3张图片

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

        egrep及其正则表达式_第4张图片

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

        egrep及其正则表达式_第5张图片

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

        

    锚定:锚定的是单个单词

    ^ 锚定行首

      egrep及其正则表达式_第6张图片

    $ 锚定行尾

        wKioL1fWAj_QXYi3AAAlvEB4X6Y164.png

    \<,\b 锚定单词首部

        egrep及其正则表达式_第7张图片

    \>,\b 锚定单词尾部

        wKioL1fWA3aCInspAAAyH1n-Fho131.png

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

        

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

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

    常用option:

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

            egrep及其正则表达式_第8张图片

        -v:反向过滤

            egrep及其正则表达式_第9张图片

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

            egrep及其正则表达式_第10张图片

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

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

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

            egrep及其正则表达式_第11张图片

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

            

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

            

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


扩展的正则表达式

    字符匹配

    . 匹配任意单个字符

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

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

    次数匹配

    * 匹配其前的字符任意次

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

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

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

        egrep及其正则表达式_第12张图片

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

        egrep及其正则表达式_第13张图片

    位置锚定

    ^ 锚定行首

    $ 锚定行尾

    \< 锚定单词首部

    >\ 锚定单词尾部

    分组

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

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

    |:or

    举例:

        C|cat表示的是C或cat

            

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

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

            egrep及其正则表达式_第14张图片

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