📅  最后修改于: 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
它仅用于匹配几个字符。例如,以下示例匹配模式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
它匹配零个或一个出现的前一个字符。例如,以下示例匹配Color和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