一、grep、egrep及fgrep

1、简介:

  grep是一种强大的搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。

2、命令

(1)grep命令:

   支持使用基本正则表达式;


 作用:文本搜索工具,根据用户指定的“pattern(过滤条件)”对目标文本逐行进行匹配检查;打印出符合条件的行;

  命令格式:

   grep [OPTIONS] PATTERN [FILE...]

  常用选项:

   ①--color=auto:对匹配到的文本着色后高亮显示;

wKiom1bekZjR6gmEAAANmdQUKrM800.png


   ②-i:忽略字符大小写;

wKiom1bekeyAfn5OAAAuxTcaYKs952.png


   ③-o: 仅显示匹配到的文本自身;

wKioL1bekxLSOwynAAAH3nKfv54084.png


   ④-v, --invert-match : 反向匹配;

wKioL1belZbgZwgKAAAefcZlm8M968.png


   ⑤-E : 支持扩展的正则表达式;


   ⑥-q, --quiet, --silient : 静默模式,不输出任何信息;

wKioL1berm_zgbN3AAAIHQswo9A771.png

    注:结合$?使用,获取上条命令的执行状态;


(2)egrep命令:

   支持使用扩展正则表达式的grep命令,相当于grep -E;


  命令格式:

   egrep [OPTIONS] PATTERN [FILE...]


(3)fgrep命令:

   不支持使用正则表达式;


  命令格式:

   grep [OPTIONS] PATTERN [FILE...]


二、正则表达式

 由一类特殊字符及文本字符所编写的模式,其有些字符不表示其字面意义,而是用于表示控制或通配的功能;


1、基本正则表达式

   基本正则表达式元字符:

      字符匹配:

        . : 匹配任意单个字符;

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

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

      示例测试:

     wKiom1blOSvACbUuAAAs_bx8D-o012.png

      匹配次数:

        用在要指定其出现的次数的字符后面,用于限制其前面的字符要出现的次数;默认工作于贪婪模式;

                        

        *:匹配前面的字符任意次(0,1或多次)

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

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

        \?:匹配前面的0次或1次,即前面的字符可有可无;

        \{m\} : 其前面的字符出现m次,m为非负整数;

        \{m,n\} : 其前面的字符出现m次,m为非负整数;[m,n]

         

      示例测试:

     wKiom1blO1bxhe7oAAAxDtztF1o195.png

                                        

      位置锚定:

        限制使用模式搜索文本,限制模式所匹配到的文本只能出现文本的哪个位置;

          

        ^ : 行首锚定;用于模式的最左侧,^PATTERN

        $ : 行尾锚定;用于模式的最右侧,PATTERN$

           ^PATTERN$ : 要让PATTERN完全匹配一整行;

           ^$ : 空行;

           ^[[:apace:]]*$:

           单词:由非特殊字符组成的连续字符(字符串)都被称为单词;

        \<或\b:词首锚定,用于单词模式的左侧,格式为、\<PATTERN,\bPATTERN

        \>或\b:词尾锚定,用于单词模式的右侧,格式为PATTERN\>,PATTERN\b


     示例测试:

     wKiom1blPLXBvaECAAAZR6wBqhA461.png


2、扩展正则表达式

   扩展正则表达式的元字符:

     字符匹配:

       .:任意单个字符;

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

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


    示例测试:

     wKiom1blPYqhs90_AAAXveJSfbI347.png


     匹配次数:

       *:任意次;

       ?:0次或1次;

       +:1次或多次;

       {m}:匹配多次;

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

         {0,n}

         {m,}


     示例测试:

     wKioL1blViqi-QDCAAAQqEHfg_s708.png

     wKioL1blVl3ADWutAAAKmJ6x048655.png


     位置锚定:

       ^:行首

       $:行尾

       \<, \b:词首

       \>, \b:词尾


    示例测试:

     wKioL1blVySgDgtLAAAM3RYFKkQ664.png