在awk编程语言中,BEGIN
和 END
块是特殊的模式,它们不依赖于输入文件或流中的数据行:
BEGIN块:
BEGIN
块在awk开始处理任何输入之前执行。- 通常用于初始化变量、打印表头信息,或者执行需要在读取实际数据前完成的操作。
- 示例用法:
BEGIN { print "Processing started at:", systime() FS = "," # 设置字段分隔符 OFS = "\t" # 设置输出字段分隔符 }
END块:
END
块在awk处理完所有输入行之后执行。- 它常用来做最终的计算(如统计总数)、汇总输出或者在所有处理完成后进行操作。
- 示例用法:
NR > 0 { sum += $3 } # 对第三列求和(假设每一行都有第三列) END { print "Total sum of third column:", sum print "Number of processed lines:", NR }
结合上述示例,在一个完整的awk脚本中,BEGIN块首先执行,然后逐行处理输入数据,最后执行END块。这为编写预处理和后处理逻辑提供了一种方便的方式。