在 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' 块计算平均分并打印出结果。

AWK BEGIN 和 END 模式:深入解析及应用场景

原文地址: https://www.cveoy.top/t/topic/mrtJ 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录