В awk, как проверить определенное значение, прежде чем пытаться вычислить

Следующая строка awk завершится ошибкой, когда c15 не определен или равен 0. Как изменить его, чтобы в таких случаях он не предпринимал попыток вычисления, а вместо этого предоставлял сообщение об ошибке или ничего не делал:

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"
Другие вопросы по тегам