• 常用的正则表达式:
    1. POSIX基本正则表达式
    2. POSIX扩展正则表达式
  • 正则表达式模式区分大小写。
  • 正则表达式认可的特殊字符:. * [ ] ^ $ { } + ? | ( ) \,如果要使用这些特殊字符中的一个作为文本字符,需要转义(escape)它。(反斜杠和正斜杠在正则表达式模式中使用需要转义)
  • ^定义从数据流中文本行开头开始。

  • $定义结尾定位。

  • ^$结合在一起可以排除掉空行。

  • **.**点匹配除换行符外的任何单位字符,必须匹配一个字符。(空格作为字符记)

  • 使用方括号定义为字符类。

  • 在字符类范围开头添加脱字符(^)就可以使用否定字符类。

  • 使用短画线符号可以在字符类中使用一系列字符范围。([0-9]);可以在单个字符类中指定多个非连续的范围:(a—ch-m)。

  • *匹配任意次。

  • ?表示其前面的字符可以不出现或出现一次。

  • +表示其前面的字符可以出现一次或多次,但必须出现至少一次。

  • 可以使用大括号指定对可重复的正则表达式的限制。这通常称为间隔(interval)。可以用两种格式表示间隔:(awk程序使用间隔时,必须使用–re-interval命令行选项。)

    • m:该正则表达式正好出现m次。
    • m,n:该正则表达式出现最少m次,最多n次。
  • 管道符允许用逻辑or公式指定正则表达式检查数据流时使用的两个或多个模式。如果任何一个模式与数据流文本匹配,该文本通过。如果没有一个模式匹配,数据流文本失败。:expr1|expr2...

    1
    2
    3
    4
    5
    6
    
    $echo "The cat is asleep" | awk '/cat|dog/{print $0}'
    The cat is asleep
    $echo "The dog is asleep" | awk '/cat/dog/{print $0}'
    The dog is asleep
    $echo "The sheep is asleep" | awk '/cat|dog/{print $0}'
    $
    
  • 正则表达式模式也可以使用圆括号分组。

  • 特殊字符类

描述
[[:alpha:]] 匹配任意字母字符,大写或小写
[[:alnum:]] 匹配任意字母数字字符,0-9,A-Z或a-z
[[:blank:]] 匹配空格或者制表字符
[[:digit:]] 匹配0-9之间的数字
[[:lower:]] 匹配任意小写字母
[[:print:]] 匹配任意可打印字符
[[:punct:]] 匹配任意空白字符
[[:space:]] 匹配任意空白字符
[[:upper:]] 匹配任意大写字母字符