AWK正则表达式 - Awk教程

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