Ошибка при делении awk со смертельным исходом: попытка деления на ноль - PullRequest
0 голосов
/ 31 марта 2020

у меня есть входной файл, как показано ниже:

OC OPC 0 0 0 -202001
OC OPC 0 0 0 -201812
OC OPK 27 11 28 -60
OC OIP 0 48344 0 -153058

я пытался взять процент, выполнив awk '{print $1,$2,$3,$5*100/$3,$4,$6*100/$4}'

получил ошибку ниже фатальной: попытка деления на ноль

в моих данных действительный 0.

1 Ответ

1 голос
/ 31 марта 2020

Вы получаете эти ошибки, потому что в коде есть значения, которые делятся на ноль (0), чтобы избежать использования следующего:

awk '{print $1,$2,$3,$3!=0?$5*100/$3:"NaN",$4,$4!=0?$6*100/$4:"NaN"}' Input_file

Где NaN - это значение, которое будет дайте нам знать, что значение делится на ноль, чтобы избежать его вывода NaN.

Я проверяю здесь условие с помощью операторов ? и :, если поле (3-е или 4-е) , поскольку OP делится только с этими значениями) равен нулю, тогда просто выведите NaN или выполните деление.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...