awk:在END块中捕获`exit’

awk:在END块中捕获`exit’,第1张

概述我正在使用awk格式化输出文件中的输入文件.我有几种模式来填充变量(例如示例中的“某些模式”).这些变量以END块中所需的格式打印.输出必须在那里完成,因为输入文件中的外观顺序不能保证,但输出文件中的顺序必须始终相同. BEGIN { FS = "=|,"}/some pattern/ { if ($1 == 8) { var = $1 } else 我正在使用awk格式化输出文件中的输入文件.我有几种模式来填充变量(例如示例中的“某些模式”).这些变量以END块中所需的格式打印.输出必须在那里完成,因为输入文件中的外观顺序不能保证,但输出文件中的顺序必须始终相同.

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’所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/1025942.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-23
下一篇 2022-05-23

发表评论

登录后才能评论

评论列表(0条)

保存