grep基本正则表达式以及扩展正则表达式

基本正则表达式:

grep:Globel serach REgular expression and print out the line

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

模式:由正则表达式的元字符及文本字符所编写出的过滤条件

grep选项:

          -l:lgnorecase,忽略字符的大小写;

          -o:仅显示匹配到的字符串本身;

          -v: –invert-match:显示不能被模式匹配到额行;

          -E:支持使用扩展的正则表达式元字符;

          -q:–quit,–slient:静默,不输出任何信息

          -A#:after:匹配本行及后#行

          -B#:before:匹配本行和前#行

          -C#:context,本行和前后各#行

基本正则表达式元字符:

          字符匹配:

               .:匹配任意单个字符        grep "r..t" /etc/passwd

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

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

                       [:digit:]、[:lower:]、[:upper:]、[:alpha:]、[:alnum:]、[:punct:]、[:space:]

           匹配次数:用在要指定其出现的次数的字符的后面,用于限制其前面的字符出现的次数

                    *:匹配其前面的字符人一次;0,1,多次;

                    如: grep "x*y"

                                abxy

                                 aby

                                 xxxxxy

                                 yab

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

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

                     \+:匹配其前面的字符1次或多次;即前面的字符要出现至少1次;

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

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

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

                              \{m,\}:至少m次

           位置锚定:

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

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

                       ^PATTERN$:用于PATTERN来匹配整行

                            ^$:空白行;

                           ^[[:space:]]*$:空行或包含空白字符的行;

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

           \<或\b:词首锚定,用于单词模式的左侧 

                    

            分组及引用:

 \(\):将一个或多个字符捆绑在一起,当做一个整体进行处理;

               \(xy\)ab:将xy当做一个整体进行匹配

 Note:分组括号中的模式匹配到的内容会被正则表达式引擎自动记录在内部的变量中

           如:

              \1 :模式从左侧起,第一个左括号以及与之匹配的右括号之间的模式所匹配到的字符

              \2:模式从左侧起,第二个左括号以及与之匹配的右括号之间的模式所匹配到的字符

              \3:

相当于:(a+b-c)*d)

             如:lovers.txt

                       he loves hist lover

                       he likes his lover

                       she liker her liker

                       she loves her liker

        ~]#grep "\(l..e).*\1" lovers.txt

    后向引用:引用前面的分组括号中的模式所匹配到的字符:


扩展正则表达式:

 egrep:

            支持扩展的正则表达式实现类似于grep文本过滤功能;grep -E

             egrep [options] patern [file..]

                      选项:

                              -i,-o,-q,-A,-B,-C

                              -G:支持基本正则表达式

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

                   字符匹配:

                            .:任意单个字符

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

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

                   次数匹配:

                          *:任意次,0,1或多次;

                          ?:0次或1次,其前的字符是可有可无的;

                          +:其前字符至少1次

                         {m}:其前的字符m次

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

                                     {0,n} 

                                     {m,}

                    位置锚定:

                           ^:行首锚定;

                           $:行尾锚定;

                         \<,\b:词尾锚定;

                         >\,\b:词尾锚定

                    分组及引用:

                              ():分组;括号内的模式匹配的字符会被记录于正则表达式引擎的内部变量中

                          后向引用:\1,\2,…

                             或

                                  a|b:a或者b

                                 C|cat:C或cat

                                (c|C)at:cat或Cat

原创文章,作者:因为有你,如若转载,请注明出处:http://www.178linux.com/31525