В 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"