正则表达式:

在计算机科学中,是指一个用来描述或者匹配一系列符合某个句法规则的字符串的单个字符串。在很多文本编辑器或其他工具里,正则表达式通常被用来检索和/或替换那些符合某个模式的文本内容。许多程序设计语言都支持利用正则表达式进行字符串操作。例如,在Perl中就内建了一个功能强大的正则表达式引擎。正则表达式这个概念最初是由Unix中的工具软件(例如sedgrep)普及开的。正则表达式通常缩写成“regex”,单数有regexpregex,复数有regexpsregexesregexen

正则表达式基本正则表达式:Basic
 
                扩展正则表达式:Extended

基本正则表达式:Basic
grep:使用正则表达式定义的模式来过滤文本的命令
               grep [options] PATTERN [FILE...]
      -i:不区分字母大小写
      --cololr:把符合条件的用颜色显示出来
      -o:只显示被模式匹配到的字符串
      -v:显示没有被模式匹配到的字符串
      -n:输出行号
      -E: 使用扩展正则表达式
      -A #:这一行后的#行 都显示出来
      -B #:这一行前的#行,都显示出来
      -C #:前后#行都显示出来

      \{n,m\}:连续nm个的“前一个字符”

例:     

1.[root@localhost ~]# grep 'root' /var/log/secure

 

 /var/log/secure这个文件中有root的那一行显示出来

 

2.搜索特定字符

  [root@localhost ~]# grep 'root'  /etc/passwd

  root:x:0:0:root:/root:/bin/bash

  operator:x:11:0:operator:/root:/sbin/nologin

 

3.反向选择

[root@localhost ~]# grep  -v  'root'  /etc/passwd

4.锚定行首

 

   [root@localhost ~]# grep '^root'  /etc/passwd

   root:x:0:0:root:/root:/bin/bash

 

5. 限定连续重复字段范围

      假设找到两个o的字符串

      [root@localhost ~]# grep ''o\2\/etc/passwd

 

6.   显示/etc/inittab中以#开头,且后面跟一个或多个空白字符,而后又跟了任意非空白字      符的行;

      grep '^#[[:space:]]\{1,\}[^[:space:]]'  /etc/inittab

 

7.  取出默认shell/sbin/nologin用户列表

    grep 'nologin$'  /etc/passwd |cut -d :f1

 

扩展正则表达式:Extended 

          grep -E =egrp

 特殊字符:

      +:匹配其前面的字符至少一次

      ?:0个或1个”字符

      |:用或(or)的方式找出整个字符串  

                 C|cat:Ccat
                 (C|c)atCatcat

     ():找出“用户组”字符串


  字符匹配:
      .: 匹配任意一个字符

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

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

 

  次数匹配:
      *匹配其前面的字符任意次 babaab、     a*b 

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

      \?:匹配前面的字符01

       

  字符集合:

      [[:space]]:表示空白字符

      [:punct:]:表示标点符号

      [:lower:]:小写字母

      [:upper:]:大写字母

      [:alpha:]:大小写字母

      [:digit:]:数字

      [:alnum:]:数字和大小写字母


 位置锚定字符:
      ^:锚定行首.此字符后面的任意内容必须出现在在行首

      $:锚定行尾,此字符前面的任意内容必须出现在在行尾 

      ^$:空白行

       \<\b:锚定词首,其后面的任意字符必须作为单词首部出现

       \>\b:锚定词尾,其前面的任意字符必须作为单词尾部出现

       \<root\>:必须是单词 分组:
       ():分组
             \1,\2...
        \.:表示点本身

如:love(able|rs)ov+匹配loveable或lovers,匹配一个或多个ov。

          x{m},x{m,},x{m,n}

作用同x\{m\},x\{m,\},x\{m,n\}