一、grep及基本正则表达式
1、grep基本用法
        grep  [OPTIONS]  PATTERN  [FILE...]
    常用选项:
--color=auto:对匹配到的文本着色后高亮显示;
-i:忽略字符大小写;
-o:仅显示匹配 到的文本自身;
-v, --invert-match:反向匹配;
-E:支持扩展的正则表达式;
-q, --quiet,静默模式,不输出任何信息;

  1)首先建立一个test.txt的文本文件

     

grep、egrep及相应的正则表达式和用法_egrep

  2)然后使用grep和各选项进行匹配搜索:
    --color=auto:对匹配到的文本着色后高亮显示

     

grep、egrep及相应的正则表达式和用法_grep_02

    -i:忽略字符大小写

     

grep、egrep及相应的正则表达式和用法_表达式_03

    -o:仅显示匹配到的文本自身,而不会显示行

     

grep、egrep及相应的正则表达式和用法_egrep_04

    -v,反向匹配

     

grep、egrep及相应的正则表达式和用法_表达式_05

   -q, 静默模式,不输出任何信息;

     

grep、egrep及相应的正则表达式和用法_grep_06

  

 

2、基本正则表达式

   正则表达式就是一类字符所书写出的模式(pattern),来处理字符串的方法,它是以行为单位来进行字符串的处理行为,正则表达式通过一些特殊称号的辅助,可以让用户轻易达到查找、删除、替换某特定字符串的处理程序。

元字符:不表示字符本身的意义,用于额外功能性的描述。

    1)字符匹配:

     

      .:匹配任意单个字符

        grep、egrep及相应的正则表达式和用法_egrep_07

  

     注意:空格也属于字符,这里的“old”前边有空格所以也匹配到了。

     

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

        grep、egrep及相应的正则表达式和用法_表达式_08

     

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

        grep、egrep及相应的正则表达式和用法_egrep_09

       

        [:digit:]:数字字符"0-9"

        [:lower:]:小写字母字符"a-z"

        [:upper:]:大写字母字符"A-Z"

        [:alpha:]:字母字符"A-Za-z"

        [:alnum:]:字母字符"A-Za-z"和数字字符"0-9"

        [:space:]:代表的是空白字符,包括空格键[Tab]等

        grep、egrep及相应的正则表达式和用法_表达式_10


    2)次数匹配

     * :匹配其前面的字符任意次

        grep、egrep及相应的正则表达式和用法_grep_11

 

     .*:匹配任意长度的任意字符,0次或多次

        grep、egrep及相应的正则表达式和用法_grep_12

     

      \?:匹配其前面的字符可有可无(即0次或1次) 

 grep、egrep及相应的正则表达式和用法_grep_13

   

       \{m\}:匹配m次 这里的\代表转义字符,扩展正则表达式中不用

       grep、egrep及相应的正则表达式和用法_表达式_14


        \{m,n\}:匹配最少m次,最多n次

        \{m,\}:匹配至少m次

        \{0,n\}:匹配至多n次

       grep、egrep及相应的正则表达式和用法_egrep_15

   

     3)位置锚定: 用于指定字符出现的位置

    ^:托字符,锚定行首,

            注意与匹配范围外的任意单个字符的[^ ]进行区分尤其是语句中含有像[:digit:]这类集         合时需特别注意。

    $:锚定行尾

       grep、egrep及相应的正则表达式和用法_表达式_16

    

     ^$:既是行首,又是行尾,即空白行

       grep、egrep及相应的正则表达式和用法_grep_17

       注意:这里为了显示效果,使用管道和wc命令直接输出了空白行的行数。

 

        \<:锚定词首 \<char \bchar 这里的\依然是转义

       grep、egrep及相应的正则表达式和用法_egrep_18

        

        \>:锚定词尾 char\> char\b

       grep、egrep及相应的正则表达式和用法_egrep_19

   

        \<char\>:既锚定词首又锚定词尾,即锚定某个单词。

       grep、egrep及相应的正则表达式和用法_egrep_20

   

     4)分组和引用

        \(\) \给括号转义

      将括号中模式匹配到的字符会被记录于正则表达式引擎内部的变量中,然后通过\1或\2等来前向        引用,引用前面的第1个或第2个左括号以及与之对应的右括号中的模式所匹配到的内容。

       grep、egrep及相应的正则表达式和用法_egrep_21

  

二、egrep及扩展正则表达式

     

1、egrep基本用法
        egrep  [OPTIONS]  PATTERN  [FILE...]
    常用选项:
--color=auto:对匹配到的文本着色后高亮显示;
-i:忽略字符大小写;
-o:仅显示匹配 到的文本自身;
-v, --invert-match:反向匹配;
-q, --quiet,静默模式,不输出任何信息;

 2、扩展正则表达式

        字符匹配的命令和用法与基本正则表达式的用法相同,这里不再重复阐述,但要注意以下两         点:

         a:在扩展正则表达式中不需要转义符\,但锚定词首词尾还需要有

         b: 扩展正则表达式中增加或者|

         元字符:

       1)字符匹配:

         .:任意单个字符

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

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

       2)次数匹配:

         *:匹配其前面的字符任意次

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

         +:匹配其前面的字符1次或多次

         {m}:匹配其前面的字符m次

         {m,n}:至少m次,至多n次

         {m,}:至少m次

         {0,n}:至多n次

       3)锚定:

          ^:锚定行首

          $:锚定行尾

          \<:锚定词首 \b

          \>:锚定词尾 \b

       4)分组及前向引用:

       5)或者 基本正则表达式中没有|

          实例还以上面的test.txt文件为例,找出以S或s开头的单词:

          grep、egrep及相应的正则表达式和用法_grep_22