说明:蓝色=命令名称ide
浅绿=命令参数spa
浅蓝=选项blog
紫色=目录get
系统环境:CentOS 5.8 x86_64it
awk版本: GNU Awk 3.1.5class
awk脚本:seq 1 12|awk 'i++,/3/'awk
awk脚本:seq 1 12|awk '!i++,/3/'im
解析:脚本
多行匹配的原则是 真到真 即逗号前的 条件为真时开始下行匹配直到逗号后面的条件为真时退出本组匹配继续寻找下一组,若是后面的一直为假,则匹配到末尾。img
第一条脚本,第一行i=0(awk的默认参数值为0),i++先判读i值在作自加运算,因此第一行假,继续往下行匹配,第二行i值为1,为真(awk中非0为真),打印第二行。第三行i的值为2,为真,同时逗号后条件为真,打印,并结束本组匹配,继续下一组。第四行,i的值为3,为真,打印。。。。。。直到结尾也木有能匹配到/3/所有打印。
第二条脚本,第一行i=0(awk的默认参数值为0),i++先判读i值在作自加运算,取反为真,打印本行并开始本组匹配,直到匹配到3,逗号后面的条件为真结束本组。觉得逗号前面的非0值取反一直为假不能在匹配到新的,退出。
例子:seq 1 12|awk -v a=4 '!a--,/1/'