grep:global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来。个人理解为:要使用正则表达式;只针对文本全面搜索;把文本中匹配的行打印出来,并且不对原文本内容做任何修改。

1、grep使用格式:

      grep  [OPTIONS]  PATTERN  [FILE...]

      (1)常用OPTIONS:

                 --color:匹配的关键字用颜色标记显示出来
                 -v:显示不能被模式匹配到的行

                 -o:显示被模式匹配到的字符串

                 -i:不区分字符大小写

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

                 -A  #:显示被匹配到的行和后面#行
                 -B  #:显示被匹配到的行和前面#行                  (#是数字)
                 -C  #:显示被匹配到的行和前后各#行

       (2)PATTERN

                 'PATTERN',一般情况下模式匹配时用单引号

                 “PATTERN”,模式匹配时包含字符串参数或调用变量要用双引号


正则表达式:regular expression,一类字符书写出来的模式。是以行为单位处理字符串的,工作在贪婪模式下,尽可能多的去匹配字符。

1、正则表达式的组成:

      普通字符:包括大小写的字母和数字

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

2、正则表达式的分类:

      功能上划分为基本正则表达式和扩展正则表达式

3、基本正则表达式中元字符的使用:

      (1)字符匹配

                 .:匹配任意单个字符

                 [ ]:匹配范围之内的字符

                         [[:space:]]:表示空白字符
                         [[:lower:]]:表示所有小写字母
                         [[:upper:]]:表示所有大写字母
                         [[:alpha:]]:表示所有字母,也可使用[a-z]表示
                         [[:digit:]]:表示所有的数字,也可以使用[0-9]表示
                         [[:alnum:]]:表示所有的数字和字母
                         [[:punct:]]:表示所有特殊字符         

                 [^]:匹配范围之外的字符

       (2)字数匹配:用于匹配其前面的字符次数

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

                  .*:匹配任意字符任意次数

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

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

                  \{m,n\}:匹配其前面字符至少m次,至多n次
                  \{m,\}:匹配其前面字符最少m次
                  \{0,n\}:匹配其前面字符至多n次

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

                   ^:用于锚定行首,用法为^Char
                   $:用于锚定行尾,用法为Char$
                   ^$:用来表示空白行

        (4)单词锚定:

                  \<:用于锚定单词的词首,也可以使用\b表示,用法为\<Char或\bChar
                  \>:用于锚定单词的行尾,也可以使用\b表示,用法为Char\>或Char\b

        (5)分组:对模式进行分组
                   \( \):用法为\(ab\)

        (6)引用:对分组的字符串基于位置引用
                  \1: 后向引用,表示引用前面的第一个左括号与之对应的右括号中的模式所匹配到的内容
                  \2: 表示引用前面的第二个左括号与之对应的右括号中的模式所匹配到的内容
                   ...

4、扩展正则表达式中元字符的使用:除了字数匹配用法有区别,其余用法基本一样,这里只把字数匹配的列出,其余的用法参照基本正则表达式。

      字数匹配:

       *:匹配其前面的字符任意次
       .*:匹配任意字符任意次数
        ?:匹配其前面字符1次或者0次
       {m}:匹配其前面字符m次
       {m,n}:匹配其前面字符至少m次,至多n次
       {m, }:匹配其前面字符最少m次
       {0,n }:匹配其前面字符至多n次

egrep使用扩展正则表达式,针对文本全面搜索;把文本中匹配的行打印出来。等同于grep -E的用法,不再赘述。