AWK 正则表达式

AWK 正则表达式

AWK在处理正则表达式方面非常强大和高效。许多复杂的任务可以通过简单的正则表达式来解决。任何命令行专家都知道正则表达式的威力。

本章涵盖了带有合适示例的标准正则表达式。

它匹配除了行尾字符外的任意单个字符。例如,以下示例匹配 fin,fun,fan 等等。

示例

[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

零或一次出现

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

分组

括号 () 用于分组,字符 | 用于表示多个选择。例如,下面的正则表达式匹配包含 苹果汁或苹果蛋糕 的行。

示例

[jerry]$ echo -e "Apple Juice\nApple Pie\nApple Tart\nApple Cake" | awk 
   '/Apple (Juice|Cake)/'

在执行这段代码时,你会得到以下结果 –

输出

Apple Juice
Apple Cake

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程