美文网首页
2020-05-23 grep及正则表达式

2020-05-23 grep及正则表达式

作者: 梧唯 | 来源:发表于2020-05-21 20:59 被阅读0次

    grep,egrep,fgrep

    grep:global research  根据模式,搜索文本,并将符合模式的文本行显示出来(部分匹配,显示整行)。使用基本正则表达式定义的模式来过滤文本的命令。

    Pattern:模式。文本字符和正则表达式的元字符组合而成的匹配条件。

    grep [options] PATTERN [FILE...]

        -i:ignore-case 忽略字符大小写

        --color:将匹配到的字符串显示颜色

        -v:反向查找,显示没有被模式匹配到的行

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

        -E:使用扩展正则表达式      grep -E = egrep

        -A #:显示匹配到的行及后#行(after)

        -B #:显示匹配到的行及前#行(before)

        -C #:显示匹配到的行及前后#行(context)

    正则表达式:REGular EXPression, REGEXP。由不表示字符本身意义的元字符组成(所以带\),通常做通配,锚定等特殊意义。

    元字符(meta-cha):

       .:匹配任意单个字符

       [ ]、[^] 同globbing

        匹配次数(贪婪模式:尽可能长的匹配):

            *:匹配其前面的字符任意次       a*b 只能匹配到任意次数的a接b,可以匹配的字符串包括b,ab,aaab,aaaaaaaab。不能匹配的字符串如a,acb,anmb。(注意与globbing区分开)

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

            ?:匹配其前面的字符1次或0次(经常要加\,转义符,\?)

            \{m,n\}:匹配其前面的字符至少m次,至多n次(n省略表示没有上限,m不能省略,“,n”省略表示就出现m次)(\表示不要被识别为命令行展开)

         位置锚定:

              ^:锚定行首,此字符后面的任意内容必须出现在行首

              $:锚定行尾,此字符前面的任意内容必须出现在行尾

              ^$:空白行

              \<或\b:锚定词首,其后面的任意字符必须作为单词首部出现

              \>或\b:锚定词尾,其前面的任意字符必须作为单词的尾部出现(linux中的单词即中间不含:?等特殊字符的单词,r55t也属于单词。且r55t.中的.等特殊字符不被认为是单词的一部分)

          分组:

              \(\):如\(ab\)*,把ab作为一个整体,ab可以出现任意次。问:为什么匹配不到aab?

             后向引用(后面可以引用前面被匹配到的内容):

             \1:第一个左括号以及与之对应的右括号所包括的所有内容

             \2:..

             \3:..

             如 grep '\(l..e\).*\1' FILE 意思为\(l..e\)匹配到的内容(第一个括号)中间.*后又出现一次(\1含义)

    正则表达式:Basic REGEXP:基本正则表达式

                          Extended REGEXP:扩展正则表达式  

                     二者所支持的元字符有一部分是不一样的,甚至有些相同元字符的意义也不尽相同

    扩展正则表达式:

        字符匹配:. [ ] [^](同基本)

        次数匹配:* ? 

            +:匹配其前面的字符至少1次   

            {m,n}:不需要加\

        位置锚定:^ $  \<  \>

        分组:():分组(不需要加\)

                   \1,\2,\3,...

        或者:|:or,或者  如a|b,或者的部分是|的整个左边和整个右边。如C|cat是指C或者cat而不是Cat或者cat。

    IPv4:5类:A B C D E

        A:1-127

        B:128-191

        C:192-223

    fgrep:fast grep 不支持正则表达式(所以速度比较快)

    相关文章

      网友评论

          本文标题:2020-05-23 grep及正则表达式

          本文链接:https://www.haomeiwen.com/subject/klxxahtx.html