Linux中awk模式
---恢复内容开始---
对于options(选项)而言,我们使用过-F选项,也使用过-v选项。
对于Action(动作)而言,我们使用过print与printf
对于Pattern(模式)而言,两种特殊模式,BEGIN模式和END模式

一个简单的"模式",换句话说,我们使用了一个简单的"条件",这个条件就是,如果被处理的行正好有2列字段,那么被处理的行则满足"条件",满足条件的行会执行相应的动作,而动作就是{print $0},即打印当前行

上述"模式"中,都使用到了关系表达式(关系操作符),比如 ==,比如<=,比如>,当经过关系运算得出的结果为"真"时,则满足条件(表示与指定的模式匹配),满足条件,就会执行相应的动作
awk支持的关系运算符


貌似没有使用任何"模式",所以,每一行都执行了指定的动作,即每一行都被输出了,其实,这种没有被指定任何"模式"的情况,也是一种"模式",我们称这种情况为"空模式","空模式"会匹配文本中的每一行,所以,每一行都满足"条件",所以,每一行都会执行相应的动作。
1、空模式
2、关系运算模式
3、BEGIN/END模式
正则表达式

1、当在awk命令中使用正则模式时,使用到的正则用法属于"扩展正则表达式"(如果不理解,请参考博客中的"正则表达式"系列文章)。
2、当使用 {x,y} 这种次数匹配的正则表达式时,需要配合--posix选项或者--re-interval选项。
行范围模式

上图中第一种语法是正则模式的语法,表示被正则表达式匹配到的行,将会执行对应的动作。
上图中第二种语法是行范围模式的语法,它表示,从被正则1匹配到的行开始,到被正则2匹配到的行结束,之间的所有行都会执行对应的动作,所以,这种模式被称为行范围模式,因为它对应的是一个范围以内的所有行,但是需要注意的是,在行范围模式中,不管是正则1,还是正则2,都以第一次匹配到的行为准
,关系运算符"~"与关系运算符"!~"都需要配合"正则模式"使用。

,$2为awk的内置变量,表示文本中的第2列,"$2~/正则/"表示文本中的第2列如果与正则匹配,则执行对应的动作

浙公网安备 33010602011771号