在AWK中,END规则中的代码确实不按顺序执行。这是因为AWK是一种流式处理语言,它按照以下顺序处理输入文件:
在END规则中,代码将在处理完所有行之后执行。这意味着无法保证END规则中代码的执行顺序。
然而,你可以使用AWK中的变量和数组来解决这个问题。你可以在每个模式规则中收集数据,并将其存储在数组中。然后在END规则中使用这些数组来执行特定的操作。下面是一个示例:
# 在每行中匹配特定的模式,并将数据存储在数组中
/Pattern1/ {
array1[$1] = $2
}
/Pattern2/ {
array2[$1] = $2
}
# 在END规则中按顺序处理数据
END {
# 处理array1
for (key in array1) {
# 执行特定的操作
}
# 处理array2
for (key in array2) {
# 执行特定的操作
}
}
在这个示例中,模式规则会匹配输入中的特定模式,并将数据存储在数组中。在END规则中,你可以按顺序处理这些数组,并执行特定的操作。
请注意,END规则中的代码只有在处理完所有行后才会执行。因此,如果你需要在处理每行时执行某些操作,你应该在模式规则中执行它们,而不是在END规则中。
上一篇:AWK - 打印输出
下一篇:AWK - 反转字段顺序