我从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)
因为你放在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)