AWK除以零误差

jef*_*uer 1 unix awk

我从awk命令得到0分区错误.我不确定是什么导致了这个,因为结果不应该是0.

在这种情况下,它应该是从1.7229/1.5444打印1.11557887.

我如何分配变量会有问题吗?

这是我的脚本:

#!/usr/bin/awk -f

FNR == 22 { measC = $2 }
FNR == 23 { refC = $2 }
factorC = refC / measC
{ print factorC }
Run Code Online (Sandbox Code Playgroud)

它返回:

/usr/bin/awk: division by zero
 input record number 1, file 1.txt
 source line number 5
Run Code Online (Sandbox Code Playgroud)

这就是我的输入数据:

#!xxx x
# x x x x x x
# x: x x
# x: x x
# x: x x x x x
# (x) x x, x x x, x.
x: x x x x
x: 3.0.0
x: x
x: 0
x: x x
x: 0
x: x x
x: x
x: 0
x: 0
x: 2
x: x x x
x: x
x: 1
x: 4
origmax: 1.5444 1.5188 1.0221 1.4932
currentmax: 1.7229 1.6888 1.1069 1.6238
Run Code Online (Sandbox Code Playgroud)

rob*_*off 5

因为你放在factorC = refC / measC一个块之外,awk认为你想将该表达式用作模式.因此,它会为每行输入计算该表达式.在第一行输入中,measC尚未定义,因此默认为零.

我想你想要这个:

#!/usr/bin/awk -f

FNR == 22 { measC = $2 }
FNR == 23 { refC = $2 }
END {
    factorC = refC / measC
    print factorC
}
Run Code Online (Sandbox Code Playgroud)

或这个:

#!/usr/bin/awk -f

FNR == 22 { measC = $2 }
FNR == 23 {
    refC = $2
    factorC = refC / measC
    print factorC
}
Run Code Online (Sandbox Code Playgroud)