AWK有非常强大和高效的处理正则表达式。一些复杂的任务,可以使用简单的正则表达式解决。任何命令行专家都知道正则表达式的威力。
本教程介绍使用合适的例子标准的正则表达式。
Dot(点)
它匹配的行字符结束,除非任何单个字符。例如下面简单的例子匹配 fin, fun, fan等。
[jerry]$ echo -e "cat\nbat\nfun\nfin\nfan" | awk '/f.n/'
在执行上面的代码后,得到以下结果:
fun fin fan
行的开始
它匹配行的开始。比如下面的例子打印所有使用模式行的开始。
[jerry]$ echo -e "This\nThat\nThere\nTheir\nthese" | awk '/^The/'
在执行上面的代码后,得到以下结果:
There Their
行结尾
行的末尾匹配。比如下面的例子打印带有字母n结束的行。
[jerry]$ echo -e "knife\nknow\nfun\nfin\nfan\nnine" | awk '/n$/'
在执行上面的代码后,得到以下结果:
fun fin fan
匹配字符集
它被用来匹配只有一个几个字符。比如下面的例子匹配模式Call 和Tall 但不是Ball。
[jerry]$ echo -e "Call\nTall\nBall" | awk '/[CT]all/'
在执行上面的代码后,得到以下结果:
Call Tall
排他设置
在排他性设置插入否定设定在方括号字符。例如示例下面的只打印Ball。
[jerry]$ echo -e "Call\nTall\nBall" | awk '/[^CT]all/'
在执行上面的代码后,得到以下结果:
Ball
变更
竖线允许正则表达式来进行逻辑或运算。比如下面的例子打印Ball 和 Call。
[jerry]$ echo -e "Call\nTall\nBall\nSmall\nShall" | awk '/Call|Ball/'
在执行上面的代码后,得到以下结果:
Call Ball
零次或一次
它匹配零次或一次出现前面的字符。比如下面的例子匹配Colour以及Color。我们通过使用由u作为一个可选的字符?
[jerry]$ echo -e "Colour\nColor" | awk '/Colou?r/'
在执行上面的代码后,得到以下结果:
Colour Color
零个或多个出现
它匹配零个或多个出现前面的字符。例如下面的例子匹配ca, cat, catt等等。
[jerry]$ echo -e "ca\ncat\ncatt" | awk '/cat*/'
在执行上面的代码后,得到以下结果:
ca cat catt
一个或多个出现
它匹配前面一个或多个出现的字符。比如下面的例子匹配2的一个或多个出现。
[jerry]$ echo -e "111\n22\n123\n234\n456\n222" | awk '/2+/'
在执行上面的代码后,得到以下结果:
22 123 234 222
分组
括号()被用于分组和字符|被用于替代品。例如下面的正则表达式匹配任何含有Apple Juice 或 Apple Cake.
[jerry]$ echo -e "Apple Juice\nApple Pie\nApple Tart\nApple Cake" | awk '/Apple (Juice|Cake)/'
在执行上面的代码后,得到以下结果:
Apple Juice Apple Cake