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