码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2017-04-14 10:37:22      阅读:210      评论:0      收藏:0      [点我收藏+]

标签:grep   egrep

     grep系:grep,egrep,fgrep,文本搜索工具,基于PATTERN对于给定的文本进行模糊搜索,grep系默认工作于贪婪模式下。

 grep:

  grep [OPTIONS] PATTERN [FILE...]

 

  PATTERN:过滤条件,是由正则表达式元字符以及没有特殊含义的文本字符组成。

  正则表达式元字符:

  会被正则表达式引擎解释为特殊含义。 pcre——perl语言的正则表达式引擎。

   基本的正则表达式:BRE

   扩展的正则表达式:ERE

   grep默认仅支持基本正则表达式

   egrep默认仅支持扩展正则表达式

   fgrep默认不开启正则表达式引擎

 

  文本字符:

  只具备字符片面含义的那些字符

 

  常用选项:

 

   -i, --ignore-case  忽略文本字符的大小写

   -v, --invert-match  反向匹配,最终显示的结果是PATTREN不能匹配的行

   -c, --count  统计匹配PATTERN的所有的行数

   -o, --only-matching  关闭贪婪模式,仅显示PATTERN能匹配的内容

   -q, --quiet, --silent  不输出任何匹配结果

   --color[=WHEN], --colour[=WHEN]    将匹配的PATTREN的内容以特殊颜色显示

   -E, --extended-regexp  扩展的正则表达式 grep-E 相当于egrep

   -F, --fixed-strings, --fixed-regexp  相当于fgrep

   -G, --basic-regexp  基本的正则表达式,egrep -G相当于grep

   -P, --perl-regexp  使用PCRE引擎

   -A NUM, --after-context=NUM  在显示匹配PATTERN的行同时显示其后面的NUM行

   -B NUM, --before-context=NUM

 

   PATTERN;

    正则表达式元字符:

 

      基本正则表达式元字符:

      GLOBBING-------简化版的正则表达式: []  ?  *

 

       字符匹配:

        .:匹配任意单个字符

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

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

        下列所有的字符集都可以放置于[]之中匹配单个字符

        [:lower:]

        [:upper:]

        [:alpha:]

        [:digit:]

        [:space:]  空格

        [:alnum:]

        [:punct:]

        [:blank:]

        [:xdigit:]:所有的十六进制数字

        a-z:所有的小写字母

        A-Z:所有的大写字母

        0-9:所有的十进制数字

 

 

       次数匹配: 该类字符之前的那个字符可以出现的次数

         *:其前面的字符可以出现任意次(0次,1次或多次)

         \?:其前面的字符可有可无(0次或一次)

         \+:其前面的字符至少出现一次(1次或多次)

         \{m\}:其前面的字符必须出现m次

         \{m,n\}:至少出现m次,至多出现n次  (m<n)

         \{,n\}:其前面字符至多出现n次,至少出现0次

         \{m,\}:其前面字符至少出现m次

 

        在正则表达式中,表示任意长度任意字符的方式:.*

 

 

        位置锚定字符:

           行锚定:

            行首锚定:^

            行尾锚定:$

           字锚定:

             字首锚定:\<或\b

             字尾锚定:\>或\b

             \b:旧版本中的锚定方法,建议不使用

 

             对于正则表达式的引擎来说,字是由特殊字符组成的连续字符串

 

 

 

           分组与引用字符:

            \(PATTERN\):将此PATTERN所匹配到的所有字符当做一个不可分割的整体来处理。

 

             在正则表达式引擎中,有一系列内置变量,这些变量会保存所有分组内的字符信息,用于反向引用,这些变量依次是:\1,\2,\3...

             ..

 

           

           或:

 

             \|

             注意:\|将其左右两边的字符串当整体对待。

 

             A\|american:A或american

             请找出ifconfig命令中数值在100-255之间的整数:

               第一位:1     2

               第二位:0-9   0-4    5

               第三位:0-9   0-9    0-5

               ifconfig | grep ‘\<\(1[0-9][0-9]\|2[0-4][0-9]\|25[0-5]\)\>‘

 

 

 

              grep [OPTIONS] [-e PATTERN | -f FILE] [FILE...]

 

                默认情况下,grep命令后面只允许有一个PATTERN;

                如果想要在依次grep搜索中写多个PATTERN,则需要-e选项,每个-e选项只能使用一个PATTERN作为参数;

                将所需要的PATTERN写入到一个文件中,保证每行只有一个PATTERN,我们就可以使用-f的方式实现多PATTERN的匹配;

 

 

       egrep:     下列用法和grep一样

 

 

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

         字符匹配:

           .

           []

           [^]

          次数匹配:

          *

          ?

          +

          {m}

          {m,n}

          {m,}

          {0,n}

 

          位置锚定:

          ^

          $

          \<,\b

          \>,\b

 

          分组和引用:

          ()

          \1,\2,\3...

 

          或:

          |


 

      

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

标签:grep   egrep

原文地址:http://12499126.blog.51cto.com/12489126/1915665

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!