以下命令
echo 1.8e-308 | gawk '$1<0.05'
不产生任何输出,而这个
gawk 'BEGIN{if(8.2547e-309<0.05){print "true"}}'
打印“true”。
这个答案解释了为什么第一个命令不产生otuput。
一个可能的解决方法是
echo 1.8e-308 | awk '$1+0 < 0.05 {print}'
我的问题是:有更好的解决方案吗?例如 awk 的一些包装器不允许修改每个脚本。
最佳解决方案可能不需要重新编译 awk 来使用 mpfr 库。
尝试以下操作:
echo 1.8e-308 | gawk '($1+0)<0.05'
产生:
1.8e-308
其他一些有趣的观察:
echo "True" | gawk '1.8e-308<0.05'
给予
True
和
echo "True" | gawk '1.8e-322<1.9e-322'
给予
True
而
echo "True" | gawk '1.8e-323<1.9e-323'
什么也没提供..
请注意这些细微差别:(
[X]
:= TRUE
)
($1 < "-3") (+$1 < "-3") ($1 < -3) ($1 < -3 "") ($1 < __)
-4 . . [X] . [X]
.4e1 . . . . .
4. . . . . .
40e-1 . . . . .
4 . . . . .
+4 [X] . . [X] .
-2 [X] [X] . [X] .
-2v [X] [X] [X] [X] [X]
变量
__
通过命令行赋值设置
awk '...' __='-3'