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
匹配字符集
它用于仅匹配几个字符中的一个。 例如,以下示例匹配模式 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