在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 }'

如果一个variables在awk(1)是未定义的,那么它的默认值是空string或零,这取决于上下文。 我认为你可以使用这个如下:

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