BEGIN模式后面跟了一个操作块。awk命令必须在对输入文件进行任何处理之前先执行该操作块。实际上,不需要任何输入文件,也能对BEGIN块进行测试,因为awk要在执行完BEGIN操作块后才开始读取输入。BEGIN操作常常被用于修改内置变量(OFS、RS、FS等)的值、为用户自定义变量赋初值和打印输出的页眉或标题。
范例
$ awk
'BEGIN{FS=":";OFS="\t";ORS="\n\n"}{print $1,$2,$3}' file
说明:在处理输入文件之前,awk先把字段分隔符(FS)设为冒号,把输出分隔符(OFS)设为制表符,还把输出记录分隔符(ORS)设为两个换行符。如果BEGIN的操作块中有两条或两条以上语句,必须用分号分隔它们或每行只写一条语句(在shell的命令提示符下输入时,必须用反斜杠来转义换行符)。
范例
$ awk
'BEGIN{print "MAKE YEAR"}'
MAKE YEAR
MAKE YEAR
说明:awk将显示MAKE YEAR。awk打开输入文件之前先执行该print函数,即使没有指定输入文件,awk也照样打印MAKE和YEAR。调试awk脚本时,可以先测试好BEGIN块的操作,再编写程序的其余部分。
END模式不匹配任何输入行,而是执行任联何与之关的操作。awk处理完所有输入行之后才处理END模式。
参考资料:http://www.linuxawk.com/jiaocheng/195.html