14、自学——Linux的学习进度与任务【正则表达式】

正则表达式

文本处理工具之grep、egrep和fgrep

1、基本正则表达式

      grep:(global search regular expression(RE)and print out the line)
      文本搜索工具,根据用户指定的文本模式对目标文件进行逐行搜索,并显示匹配的行

        # grep [options] 'PATTERF(模式)' file,默认只支持基本正则表达式,要匹配额外功能的字符用-E
            --color=auto 指定颜色
            -v:反向匹配,显示不能被模式匹配到的行
            -o:仅匹配被模式匹配到的字串,而非整行
            -i:不区分大小写,ignore-case
            -E:支持扩展
            -A #:还显示模式下面的一行
            -B #:还显示模式上面的一行
            -C #:前后各显示一行


    正则表达式:是一类字符所书写出的模式(pattern)
    元字符:类似通配符,不表示字符本身的意义,用于额外功能性的描述

    基本正则表达式的元字符:


        字符匹配:
            .:任意单个字符
            []:指定范围内的任意单个字符
                [0-9],[[:digit:]]
                [a-z],[[:lower:]]
                [A-Z],[[:upper:]]
                所有的字母:[[:alpha:]]
                字母+数字:[[:alnum:]]
                空格:[[:space:]]
                标点符号:[[:putct:]]
            [^]: 指定范围外的任意单个字符



        次数匹配:用来指定匹配其前面的字符的次数
            *:任意次
              例子:x*y xxy xy y 都能匹配
              .*:匹配任意长度的任意字符
            ?:前面字符出现0次或者1次的
            {m}:匹配前面的字符m次
            {m,n}:至少m次,至多n次
            {m,}:至少m次
            {0,n}:至多n次
            做变量换算需要使用”“


        贪婪模式:尽可能的长的去匹配字符:

        位置锚定:用于指定字符出现的位置
            ^:锚定行首
              ^Char
            $:锚定行尾
              grepchar$
            ^$:空白行



        单词的位置锚定:

            <char :锚定词首,char
            char> : 锚定词尾,char



        分组:
            ()
              (ab)*xy



        引用:
            1:后向引用,引用前面的第一个左括号以及与之对应的右括号中的模式匹配到的内容,意思是说前面出现一次,在1这也要出现一次
            2
            ...
                (a.b)xy1: a6bxya6b

2、扩展正则表达式

    egrep:使用扩展正则表达式来构建模式,相当于 grep -E
      元字符:
        字符匹配:
            .:任意单个字符
             []:指定范围内的任意单个字符
            [^]:指定范围外的任意单个字符

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


         位置锚定:用于指定字符出现的位置
          ^:锚定行首
            ^Char
          $:锚定行尾
            grepchar$
          ^$:空白行


        单词的位置锚定:
          <char :锚定词首,char
          char> : 锚定词尾,char


       分组:
          ():分组
           |:或者,ac|bc ac或者bc

   fgrep:不解析正则表达式

原文地址:https://www.cnblogs.com/wxt19941024/p/6818690.html