使用纯awk基于指数表示法值对条目进行计数
在我的tab del数据文件中,我试图统计小于1e-5 e阈值的条目,该文件类似于下表 第1列第2列第3列评估 入口1--1e-10 入口2--- 入口3--0.001 我使用了以下代码:使用纯awk基于指数表示法值对条目进行计数,awk,exponential,notation,Awk,Exponential,Notation,在我的tab del数据文件中,我试图统计小于1e-5 e阈值的条目,该文件类似于下表 第1列第2列第3列评估 入口1--1e-10 入口2--- 入口3--0.001 我使用了以下代码: $: awk -F"\t" '{print $4}' table.txt | awk '($1 + 0) < 1e-5' | grep [0-9*] | wc -l 虽然这样做有效,但我希望将命令改进为纯awk。我很想知道如何在awk中做到这一点。另外,如果可能的话,我想知道如何打印满足阈值的行。谢
$: awk -F"\t" '{print $4}' table.txt | awk '($1 + 0) < 1e-5' | grep [0-9*] | wc -l
虽然这样做有效,但我希望将命令改进为纯awk。我很想知道如何在awk中做到这一点。另外,如果可能的话,我想知道如何打印满足阈值的行。谢谢你的帮助 这可能是最好的方法:
awk -F"\t" '($4+0==$4) && ($4 < 1E-5){c++}END{print c}' file
awk-F“\t”($4+0==$4)和&($4<1E-5){c++}结束{print c}文件
这样做的目的如下:
:检查($4+0==$4)
是否为数字的第一个条件$4
(4)欢迎访问堆栈溢出。在上面的代码中,我看不出您在试图做什么。您的代码不太有意义。您是否试图对最后一列中低于给定阈值的所有值进行计数?是否希望用E-NeXT编写该值?是否考虑了<代码> 0.001 和<代码> 1E-3<代码之间的区别?>?将
添加到0
会将任何非数字值转换为$1
,因此您的比较将始终成功。请查看和查看。您好!我编辑了我的问题。是的,我想用<1e-05来计算行数。不,我没有尝试用电子表示法写入值。显然y、 第二个awk可以考虑1e-3和0.001之间的差异。此外,破折号或空白条目在第二个awk后仍保持原样。如果全局匹配导致文件名扩展,则grep也不会按预期运行-始终引用shell元字符0
awk -F"\t" '($4+0==$4) && ($4 < 1E-5){c++}END{print c}' file