在 awk 中如何在尝试计算之前检查定义的值

在 awk 中如何在尝试计算之前检查定义的值

当 c15 未定义或为 0 时,以下 awk 行将失败。如何修改它,以便在这种情况下它不会尝试计算,而是提供错误消息或不执行任何操作:

cat formatted.dsv | awk -F"\t" '{ c12 = $12; c15 = $15; c17 = $17; c16 = $16; c4 = $4; c9 = $9; c5 = $5; c10 = $10; c14 = $14; c8 = $8; c7 = $7 } END { printf "%d\n", ((c12+c17+c16+c4+c9+c5+c10+c14+c8+c7))/c15)*1000 }'

答案1

如果变量未定义awk(1)那么它的默认值为空字符串或零,具体取决于上下文。我认为您可以按如下方式使用它:

if (c15) printf "%d\n", ((c12+c17+c16+c4+c9+c5+c10+c14+c8+c7))/c15)*1000
else print "C15: null or empty\n"

相关内容