我awk
用于在输出文件中格式化输入文件。我有几种模式来填充变量(例如示例中的“某些模式”)。这些变量以块中所需的格式打印END
。输出必须在那里完成,因为不能保证输入文件中出现的顺序,但输出文件中的顺序必须始终相同。
BEGIN {
FS = "=|,"
}
/some pattern/ {
if ($1 == 8) {
var = $1
} else {
# Incorrect field value
exit 1
}
}
END {
# Output the variables
print var
}
所以我的问题是exit
模式中的陈述。如果有一些错误并且调用了这个命令,那么根本不应该有输出或者最多是一个错误消息。但正如 gawk 手册(此处)所说,如果exit
在模式块中调用命令,则END
至少会执行该块。有什么办法可以捕捉到exit
类似的东西:
if (!exit_invoked) {
print var
}
或其他方式避免在END
块中打印输出?
斯特凡
编辑:使用了 shellter 的解决方案。