📜  AWK-正则表达式

📅  最后修改于: 2020-11-05 03:51:14             🧑  作者: Mango


AWK在处理正则表达式方面非常强大且高效。使用简单的正则表达式可以解决许多复杂的任务。任何命令行专家都知道正则表达式的功能。

本章介绍标准的正则表达式,并提供适当的示例。

它匹配行尾字符以外的任何单个字符。例如,以下示例匹配鳍,乐趣,风扇等。

[jerry]$ echo -e "cat\nbat\nfun\nfin\nfan" | awk '/f.n/'

执行上述代码后,您将获得以下结果-

输出

fun
fin
fan

行首

它与行首匹配。例如,以下示例打印以模式The开头的所有行。

[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

匹配字符集

它仅用于匹配几个字符。例如,以下示例匹配模式CallTall,但不匹配Ball

[jerry]$ echo -e "Call\nTall\nBall" | awk '/[CT]all/'

输出

在执行此代码时,您将获得以下结果-

Call
Tall

独家套装

在独占设置中,克拉否定了方括号中的字符集。例如,以下示例仅打印Ball

[jerry]$ echo -e "Call\nTall\nBall" | awk '/[^CT]all/'

在执行此代码时,您将获得以下结果-

输出

Ball

改造

竖线允许对正则表达式进行逻辑“或”运算。例如,以下示例显示BallCall

[jerry]$ echo -e "Call\nTall\nBall\nSmall\nShall" | awk '/Call|Ball/'

在执行此代码时,您将获得以下结果-

输出

Call
Ball

零次或一次

它匹配零个或一个出现的前一个字符。例如,以下示例匹配ColorColor 。我们通过使用?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