Я не вижу проблемы с кодом, за исключением того, что группировка арифметических операндов неверна.Вы хотите выполнить умножение на 100 на значение из деления ранее.Так что просто делайте ниже.Далее избавьтесь от операторов if
else как
awk -F "|" 'NR > 1 { print ((1 - ($45+$47+$49-_m) / ($44+$46+$48-_n)) *100)} { _n=$44+$46+$48; _m=$45+$47+$49 }'
99.9989
Даже без printf()
, для его печати требуется как минимум 3 прецизионных символа без округления значения до следующего целого числа
awk -F "|" 'NR > 1 { printf "%.3f\n", ((1 - ($45+$47+$49-_m) / ($44+$46+$48-_n)) *100)} { _n=$44+$46+$48; _m=$45+$47+$49 }'
99.999