sedgawk介绍与正则表达式-----------(定义基本正则表达式(BRE)模式)

将相本无种,男儿当自强。这篇文章主要讲述sedgawk介绍与正则表达式-----------(定义基本正则表达式(BRE)模式)相关的知识,希望能为你提供帮助。
7.5定义BRE模式                最基本的BRE模式是匹配数据流中的文本字符。
7.5.1纯文本
                sed编辑器和gawk程序中如何使用标准的文本字符串筛选数据。正则表达式并不关心模式出现在数据流中的位置。模式出现的次数也无关紧要。一旦表达式能够在文本字符串的任何位置匹配该模式,它就将字符串传递给使用它的Linux使用程序。
                关键是匹配正则表达式模式和数据流文本。重要的是要记住正则表达式在匹配模式时异常挑剔。要记住的第一条规则是正则表达式模式区分大小写。
                在正则表达式中,不必局限于完整的单词。如果所定义的文本出现的数据流的任意位置,正则表达式都将匹配。在正则表达式中,不必局限于单个单词,也可以在文本字符串中包含空格和数字。
               
7.5.2特殊字符
                正则表达式赋予几个字符特殊的含义。如果在文本模式中试图使用这些字符,就可能得不到预期的结果。正则表达式认可的特殊字符有:.*[]^$\\+?|()
                如果要使用这些特殊字符中的一个作为文本字符,需要转义它。转义特殊字符时,需要在特殊字符的前面加一个特殊字符,向正则表达式引擎说明:它应该将下一个字符解释为普通文本字符。
                操作操作实例如下:
         
7.5.3定位符
                默认情况下,在指定正则表达式模式时,只要模式出现在数据流之中,就匹配。有两个特殊字符可以用来将模式定位到数据流行的开头或结尾。
                1.从头开始
                脱字符(^)定义从数据流中文本行开头开始的模式。如果该模式位于文本行的其他任意位置,正则表达式失败。要使用脱字符,需将它放在正则表达式指定的模式之前。脱字符定位符在各个新数据行的开头检查模式。
                如果将脱字符放在模式的其他位置,它就充当普通字符而不再作为特殊字符。
               
                第一个实例:以大写字母开头且后续为ime的单词的行;第二个实例:打印以大写字母开头的行;第三个实例:^充当普通字符,打印文中出现w ^的行;第四个实例:打印以小写字母i开头的行;第五个实例:脱字符不在模式的开头。
                2.查找结尾
                与在一行开始查找模式相反的是在行为查找它。美元符号($)特殊字符定义结尾定位。在文本模式之后添加特殊字符表示行必须以此文本模式结尾。
               
                结尾文本模式要检查的内容必须仔细,不然与正则表达式模式不在匹配。
                3. 联合定位
                两种常见情况是要在同一行将开始和结尾定位符相结合。第一种情况:假设要查找仅包含某一特定文本模式的数据行,sed编辑器会忽略除包含特定文本之外的行。第二种情况:将两个定位符在没有文本的模式中结合在一起,可以筛选数据流中的空行。
                具体操作实例:
                 
                第一个实例:找到开头为dog与结尾为dog的行并修改该行数据流信息;第二个实例与第一个实例功能类似,只不过打印所有的数据流;第三个实例:把空行修改成成相应的数据流信息并输出整个数据流。
7.5.4点字符
                点特殊字符用于匹配除换行符之外的任何单个字符。但点字符必须匹配一个字符;如果在圆点位置没有任何字符,那么模式匹配失败。
     
      第一个实例:匹配单词为go开头的行;第二个实例:匹配单词中含有ave的行;第三实例:匹配单词中含有o的行。
                在正则表达式中,空格作为字符记。
7.5.5字符类
                点特殊字符适合匹配某一字符位置上的任意字符,但如果要限制匹配的字符,需要在正则表达式中定义一个字符类。
                可以定义一类字符来匹配文本模式中的某一位置。如果该字符类中的字符之一在数据流中,它就和模式匹配。
                为定义字符类,要使用方括号。应该将要包括在该类中的所有字符用方括号括起来。正则表达式可以出现在数据流文本的任何地方。
                操作实例:
               
                第一个实例:打印包含acf字符的行;第二个实例:打印包含Have或have的行;第三实例:打印包含Have或have的行,打印包含类似good、goes、god等字符的行。
7.5.6否定字符类
【sedgawk介绍与正则表达式-----------(定义基本正则表达式(BRE)模式)】                在正则表达式模式中,也可以查找不在字符类中的字符。只需在字符类范围的开头添加脱字符。
               
                通过否定字符类,正则表达式可以匹配除H但带有ave的单词的行,本例子匹配不带有Have的行。
7.5.7 使用范围
                通过使用短划线符号(-)可以在字符类中使用一系列字符范围。只需指定范围内的第一个字符、短划线,然后是范围内的最后一个字符。根据Linux系统使用的字符集,正则表达式包括指定字符范围内的所有字符。
               
                第一个实例:匹配开头为G到K或g到k开头且后面内容为ave的单词的行;第二个实例:匹配带有0到5的数字的行。
7.5.8 特殊字符类
                除定义的字符类,BRE还包含特殊字符类,还可以用于匹配特定类型的字符。可以使用的BRE特殊字符如下:
               
                在正则表达式中,完全可以像使用普通字符类一样使用特殊字符类:
               
                使用特殊字符类是定义范围的一种简单范围。
7.5.9 星号
                在某个字符之后加一个星号表示该字符必须在匹配模式的文本中不出现或出现多次。该模式符号常用于处理语言拼写中常见的错误拼写或变化的单词。
                使用这个模式,可以方便地搜索出现在数据流中一行文本上任意位置的多个单词。还可以将星号应用于字符类。允许指定在文本中多次出现的一组或某一范围的字符。
                常用实例:
         



    推荐阅读