Awk 致命:尝试零除
当我试图用awk计算平均值和标准偏差时,我得到的是awk:fatal:除以零的错误 我的命令是Awk 致命:尝试零除,awk,Awk,当我试图用awk计算平均值和标准偏差时,我得到的是awk:fatal:除以零的错误 我的命令是 BEGIN{ recvs = 0; routing_packets = 0; } { state = $1; layer = $3; tipe_data = $6; } { if (state == "r" && tipe_data == "tcp" && layer=="AGT") recvs++; if (state == "
BEGIN{
recvs = 0;
routing_packets = 0;
}
{
state = $1;
layer = $3;
tipe_data = $6;
}
{
if (state == "r" && tipe_data == "tcp" && layer=="AGT") recvs++;
if (state == "s" && layer == "AGT" && tipe_data =="AODV") routing_packets++;
}
END{
printf("##################################################################################\n");
printf("\n");
printf(" Normalized Routing Load = %.3f\n", routing_packets/recvs);
printf("\n");
printf("##################################################################################\n");
}
谢谢是的,分配给RECV和routing_数据包变量的值为零
recvs = 0;
routing_packets = 0;
你想把它分开。就是
routing_packets/recvs
结果呢,
awk: fatal: division by zero attempted" error
如果此If检查从未成功,则RECV的值将等于0
if (state == "r" && tipe_data == "tcp" && layer=="AGT") recvs++;
尽管如此,您的程序仍将继续,并点击这一行来路由数据包/记录
您应该根据您的需求处理RECV等于0的场景。更改此行
printf(" Normalized Routing Load = %.3f\n", routing_packets/recvs);
到
一个tipe数据可能应该是tipe_数据。但我想,这与被零除无关……试着打印状态、图层和tipe_数据,确保它们包含您期望的内容。。。在分割之前还打印路由_数据包和RECV。
if (recvs)printf(" Normalized Routing Load = %.3f\n", routing_packets/recvs);