BEGIN { FS = "=|,"}/some pattern/ { if ( == 8) { var = } else { # Incorrect fIEld value exit 1 }}END { # Output the variables print var}
所以我的问题是模式中的退出语句.如果存在某些错误并且调用了此命令,则根本不应该输出或者最多没有错误消息.但正如gawk手册(here)所说,如果在模式块中调用exit命令,则至少会执行END块.有没有办法赶上出口像:
if (!exit_invoked) { print var}
或其他一些方法来避免在END块中打印输出?
斯特凡
编辑:使用shellter的解决方案.
解决方法 你必须通过在退出行之前设置exit_invoked来明确地处理它,即BEGIN { FS = "=|,"}/some pattern/ { if ( == 8) { var = } else { # Incorrect fIEld value exit_invoked=1 exit 1 }}END { if (! exit_invoked ) { # Output the variables print var }}
我希望这有帮助.
总结以上是内存溢出为你收集整理的awk:在END块中捕获`exit’全部内容,希望文章能够帮你解决awk:在END块中捕获`exit’所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)