Назад | Перейти на главную страницу

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

если переменная не определена в 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"