awk是一种强大的文本处理工具,广泛应用于Linux和Unix系统中。其BEGIN和END是两种特殊的模式,允许用户在处理数据前后执行特定操作:
BEGIN块在数据处理前运行,典型应用场景包括:
awk 'BEGIN {
FS=":" # 设置字段分隔符为冒号
OFS="|" # 设置输出字段分隔符
print "开始处理数据..."
}
{
print $1, $3 # 处理每行数据
}' /etc/passwd
此代码会在处理/etc/passwd文件前设置分隔符并输出开始提示。
END块在处理完所有数据后执行,常用于数据汇总:
awk '{
sum += $1
count++
}
END {
avg = sum / count
print "总和:", sum
print "平均值:", avg
print "处理行数:", count
}' data.txt
这段代码计算文件data.txt中第一列数值的总和与平均值。
结合使用BEGIN和END可以实现完整的数据处理流程:
awk 'BEGIN {
print "员工工资报告"
print "=============="
total = 0
}
$3 > 5000 {
print $1, $3
total += $3
}
END {
print "=============="
print "总工资支出:", total
}' salary.txt
掌握awk的BEGIN和END模式能够显著提升文本处理效率,是每个系统管理员和数据分析师必备的技能。