正则表达式( Regular Expressions)
优质
小牛编辑
140浏览
2023-12-01
AWK在处理正则表达式方面非常强大和高效。 使用简单的正则表达式可以解决许多复杂的任务。 任何命令行专家都知道正则表达式的强大功能。
本章介绍了带有合适示例的标准正则表达式。
Dot
它匹配除行尾字符之外的任何单个字符。 例如,以下示例匹配fin, fun, fan等。
例子 (Example)
[jerry]$ echo -e "cat\nbat\nfun\nfin\nfan" | awk '/f.n/'
执行上面的代码时,您会得到以下结果 -
输出 (Output)
fun
fin
fan
开始行
它匹配行的开头。 例如,以下示例打印以模式The开头的所有行。
例子 (Example)
[jerry]$ echo -e "This\nThat\nThere\nTheir\nthese" | awk '/^The/'
执行此代码时,您将获得以下结果 -
输出 (Output)
There
Their
行结束
它匹配行尾。 例如,以下示例打印以字母n结尾的行。
例子 (Example)
[jerry]$ echo -e "knife\nknow\nfun\nfin\nfan\nnine" | awk '/n$/'
输出 (Output)
执行此代码时,您将获得以下结果 -
fun
fin
fan
匹配字符集
它仅用于匹配多个字符中的一个。 例如,以下示例匹配模式Call和Tall但不匹配Ball 。
例子 (Example)
[jerry]$ echo -e "Call\nTall\nBall" | awk '/[CT]all/'
输出 (Output)
执行此代码时,您将获得以下结果 -
Call
Tall
独家套装
在专用集中,克拉否定了方括号中的字符集。 例如,以下示例仅打印Ball 。
例子 (Example)
[jerry]$ echo -e "Call\nTall\nBall" | awk '/[^CT]all/'
执行此代码时,您将获得以下结果 -
输出 (Output)
Ball
改变(Alteration)
垂直条允许正则表达式进行逻辑OR运算。 例如,以下示例打印Ball和Call 。
例子 (Example)
[jerry]$ echo -e "Call\nTall\nBall\nSmall\nShall" | awk '/Call|Ball/'
执行此代码时,您将获得以下结果 -
输出 (Output)
Call
Ball
零或一次出现
它匹配前一个字符的零次或一次出现。 例如,以下示例匹配Colour和Color 。 我们使用?作为一个可选字符? 。
例子 (Example)
[jerry]$ echo -e "Colour\nColor" | awk '/Colou?r/'
执行此代码时,您将获得以下结果 -
输出 (Output)
Colour
Color
零次或多次出现
它匹配前一个字符的零次或多次出现。 例如,以下示例匹配ca, cat, catt,等。
例子 (Example)
[jerry]$ echo -e "ca\ncat\ncatt" | awk '/cat*/'
执行此代码时,您将获得以下结果 -
输出 (Output)
ca
cat
catt
一次或多次发生
它匹配前一个字符的一个或多个匹配项。 例如,下面的示例匹配2的一个或多个匹配项。
例子 (Example)
[jerry]$ echo -e "111\n22\n123\n234\n456\n222" | awk '/2+/'
执行上面的代码时,您会得到以下结果 -
输出 (Output)
22
123
234
222
Grouping
Parentheses ()用于分组和字符| 用于替代品。 例如,以下正则表达式匹配包含Apple Juice or Apple Cake 。
例子 (Example)
[jerry]$ echo -e "Apple Juice\nApple Pie\nApple Tart\nApple Cake" | awk
'/Apple (Juice|Cake)/'
执行此代码时,您将获得以下结果 -
输出 (Output)
Apple Juice
Apple Cake