【问题标题】:Awk if else issuesawk 如果其他问题
【发布时间】:2012-05-31 03:53:54
【问题描述】:

Bash 将箭头指向“else”并用挑衅的抱怨语气说“语法错误”。

awk '{if($3 != 0) a = ($3/$4) print $0, a; else if($3==0) print $0, "-" }' file > out

为什么?

【问题讨论】:

    标签: if-statement awk syntax


    【解决方案1】:

    您忘记了 if 块周围的大括号,以及块中语句之间的分号。

    awk '{if($3 != 0) {a = ($3/$4); print $0, a;} else if($3==0) print $0, "-" }' file > out
    

    【讨论】:

    • 仍然尝试被零除
    • @AWE:添加测试以处理$4为0。
    • 我做了,然后我 awk 得到它,但它不存在。
    • 啊哈!我有回车问题。这对我有帮助:sed 's/.$//'
    • 很好 sed 帮助了我,但我已经把它变成了 $4/$3,$3/$4 仍然给我零除法。
    【解决方案2】:

    试试代码

    awk '{s=($3==0)?"-":$3/$4; print s}'
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-10-20
      • 1970-01-01
      • 2017-07-24
      • 1970-01-01
      • 1970-01-01
      • 2020-02-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多