awk的BEGIN和END
你可能对Unix比较熟悉,但你可能对Unix awk很陌生,这一点也不奇怪,的确,与其优秀的功能相比,awk还远没达到它应有的知名度。 流程控制语句是任何程序设计语言都不能缺少的部分。任何好的语言都有一些执行流程控制的语句。Unix awk提供的完备的流程控制语句类似于C语言,这给我们编程带来了极大的方便。 BEGIN和END: 在Unix awk中两个特别的表达式,BEGIN和END,这两者都可用于pattern中(参考前面的awk语法),提供BEGIN和END的作用是给程序赋予初始状态和在程序结束之后执行一些扫尾的工作。 任何在BEGIN之后列出的操作(在{}内)将在Unix awk开始扫描输入之前执行,而END之后列出的操作将在扫描完全部的输入之后执行。因此,通常使用BEGIN来显示变量和预置(初始化)变量,使用END来输出最终结果。 例:累计销售文件xs中的销售金额(假设销售金额在记录的第三字段): $``` awk 'BEGIN { FS=":";print "统计销售金额";total=0} {print $3;total=total+$3;} END {printf "销售金额总计:%.2f",total}' sx 例2:容量字段累加 grep '19/03/12 22:' nohup.out| grep Successfully|awk '{print $9}' |