美文网首页
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