AWK BEGIN 和 END 模式:深入解析及应用场景
在 AWK 中,'BEGIN' 和 'END' 是两个特殊的模式,它们不像其他模式那样匹配输入文本,而是代表 AWK 处理输入文本之前和之后执行的代码块。
'BEGIN' 块在 AWK 开始处理输入文本之前执行,常用于初始化变量、打印标题等任务。例如,以下代码将打印 'Hello World':
awk 'BEGIN {print 'Hello World'}'
'END' 块在 AWK 处理完输入文本后执行,常用于打印统计信息、计算总计等任务。例如,以下代码将打印出输入文本的行数:
awk 'END {print NR}' file.txt
除了初始化和统计任务,'BEGIN' 和 'END' 块还能用于执行任何需要在处理输入文本之前或之后进行的操作。例如,以下代码将打印出当前日期和时间:
awk 'BEGIN {system("date")}'
下面是一个完整示例,它将从文件中读取名字和成绩,计算平均成绩并打印出结果:
awk 'BEGIN {sum=0; count=0; print "Name Score"}
{sum+=$2; count++; print $1 "\t" $2}
END {print "Average score: " sum/count}' file.txt
在上述代码中,'BEGIN' 块初始化变量并打印标题;然后,对于每一行输入,计算总分并打印出名字和成绩;最后,'END' 块计算平均分并打印出结果。
原文地址: https://www.cveoy.top/t/topic/mrtJ 著作权归作者所有。请勿转载和采集!