正则表达式                                                                                快速调治 grep

      正则表达式:由一堆元字符组成,将这些元字符按一定的规则组合起来用来过滤匹配不同的内容。(简单的说正则表达式就是一个由元字符组成的过滤网)

     正则表达式的分类

      1、基本正则表达式:即标准正则表达式,支持基本的元字符。

      基本正则表达式所支持的元字符极其含义如图所示:

     

了解grep和正则表达式_练习 
 

了解grep和正则表达式_grep_02

      2、扩展正则表达式:支持比基本正则表达式更多的元字符,但是扩展正则表达式对有些基本本正则表达式所支持的元字符并不支持。

           扩展正则表达式所支持的元字符如图所示:

了解grep和正则表达式_练习_03

 

了解grep和正则表达式_grep_04 

    通过对比我们会发现在基本正则表达式中支持的元字符,在扩展正则表达式中并不是都支持。

      

            grep

        grep  全面执行正则表达式并将匹配的内容显示出来。换而言之,grep是用来执行由元字符组成的过滤网的,并显示出匹配过滤网的信息。

           grep执行正则表达式的格式为:grep "keyword" file

            grep是用来执行基本正则表达式的命令,其不能够识别扩展正则表达式中的元字符。

            grep -E = egrep 是用来执行拓展正则表达式的,因扩展正则表达式中并不包含所有的基本正则表达式,所以egrep也不能执行基本正则表达式。

            下面通过下图练习中的几道题我们来看一看grep和正则表达式结合的效果

了解grep和正则表达式_正则表达式_05

 答案

      1、grep --color "^[sS]" /pro/meminfo (--color是把匹配的内容以红色显示出来,便于核对执行效果,我们为了方便也可以使用alias grep='grep --color'命令来设置命令的别名让命令grep与grep --color有相同的效果)

      2、grep  "nologin$" /etc/passwd
      3、grep "^#[[:space:]]\(1,\).*" /etc/inittab
      4、grep  ":[0-9]:" /etc/inittab
      5、grep  "[[:space:]]\(1,\).*" /boot/grub/grub.conf
      6、grep  "^\([0-9]\).*\1$" /etc/
      7、ifconfig | grep --color "inet addr" | grep -v '127.0.0.1' | cut -d: -f2 | cut -d" " -f1
      8、grep --color "[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\." /etc/sysconfig/network-spcripts/ifcfg-eth0    使用扩展正则表达式的答案如下:
          grep -E "([0-9]\{1,3\}\.){3}[0-9]\{1,3}" /etc/sysconfig/network-spcripts/ifcfg-eth0