awk语句中多个{}的执行过程?

例如:
[root@159 shell]# cat t
a
b
c
d
e
[root@159 shell]# awk '$0=="b"{printf NR" "}{printf $0" "}{print NF,$0}' t
a 1 a         #$0不等于"b",则执行{printf $0" "}{print NF,$0}这二个动作。
2 b 1 b       #$0等于"b",则执行{printf NR" "}{printf $0" "}{print NF,$0}这三个动作。
c 1 c         #$0不等于"b",则执行{printf $0" "}和执行{print NF,$0}
d 1 d         #$0不等于"b",则执行{printf $0" "}{print NF,$0}这二个动作。
e 1 e         #$0不等于"b",则执行{printf $0" "}{print NF,$0}这二个动作。

这可以清楚的看出,awk是一行一行读取文件的,然后按照代码的前后顺序执行。如果动作中有next和exit时,结果就不一样了。

[root@159 shell]# awk '$0=="b"{printf NR"\n";next}{printf $0" "}{print NF,$0}' t
a 1 a
2
c 1 c
d 1 d
e 1 e

[root@159 shell]# awk '$0=="b"{printf NR"\n";exit}{printf $0" "}{print NF,$0}' t
a 1 a
2