正则表达式
AWK 可以方便高效地处理正则表达式。大量复杂的任务都可以由极其简单的正则表达式来解决。每一个精通命令行的人都知道正则表达式真正的威力所在。 这一章将着重讲解标准正则表达式的使用方法。 点(Dot)点字符(.)可以匹配除了行结束字符的所有字符。比如下面的便子就可以匹配 fin,fun,fan 等等。 [jerry]$ echo -e "catnbatnfunnfinnfan" | awk '/f.n/' 执行上面命令可以得到如下结果: fun fin fan 行开始行开始符(^)匹配一行的开始。下面的示例将输出所有以字符串 The 开始的行。 [jerry]$ echo -e "ThisnThatnTherenTheirnthese" | awk '/^The/' 执行上面的命令可以得到如下结果: There Their 行结束行结束符($)匹配一行的结束。下面的例子中将输出所有以字符 n 结束的行: [jerry]$ echo -e "knifenknownfunnfinnfannnine" | awk '/n$/' 执行上面的命令可以得到如下结果: fun fin fan 匹配字符集匹配字符集用于匹配集合(由方括号表示)中的一个字符。如下例子中,匹配 Call 与 Tall 而不会匹配 Ball。 [jerry]$ echo -e "CallnTallnBall" | awk '/[CT]all/' 执行上面的命令可以得到如下结果: fun fin fan 排除集正则匹配时会排除集合中的字符。如下例子中只会输出 Ball。 [jerry]$ echo -e "CallnTallnBall" | awk '/[^CT]all/' 执行上面的命令可以得到如下结果: Ball 或竖线(|)允许正则表达式实现逻辑或运算. 下面例子将会输出 Ball 与 Call 。 [jerry]$ echo -e "CallnTallnBallnSmallnShall" | awk '/Call|Ball/' 执行上面的命令可以得到如下结果: Call Ball 最多出现一次该符号( ?)前面的字符不出现或者出现一次。如下示例匹配 Colour 与 Color。 使用 ? 使得 u 变成了可选字符 。 [jerry]$ echo -e "ColournColor" | awk '/Colou?r/' 执行上面的命令可以得到如下结果: Colour Color 出现零次或多次该符号(*) 允许其前的字符出现多次或者不出现。如下示例将匹配 ca,cat,catt 等等。 [jerry]$ echo -e "cancatncatt" | awk '/cat*/' 执行上面的命令可以得到如下结果: ca cat catt 出现一次或多次该符号(+)使得其前的字符出现一次或者多次。下面的例子会匹配一个 2 或者多个连续的 2。 [jerry]$ echo -e "111n22n123n234n456n222" | awk '/2+/' 执行上面的命令可以得到如下结果: 22 123 234 222 分组括号用于分组而字符 | 用于提供多种选择。如下的正则表达式会匹配所有包含 Apple Juice 或 Aplle Cake 的行。 [jerry]$ echo -e "Apple JuicenApple PienApple TartnApple Cake" | awk '/Apple (Juice|Cake)/' 执行上面的命令可以得到如下结果: Apple Juice Apple Cake (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |