使用纯awk基于指数表示法值对条目进行计数

使用纯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中做到这一点。另外,如果可能的话,我想知道如何打印满足阈值的行。谢

在我的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" '($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
    会将任何非数字值转换为
    0
    ,因此您的比较将始终成功。请查看和查看。您好!我编辑了我的问题。是的,我想用<1e-05来计算行数。不,我没有尝试用电子表示法写入值。显然y、 第二个awk可以考虑1e-3和0.001之间的差异。此外,破折号或空白条目在第二个awk后仍保持原样。如果全局匹配导致文件名扩展,则grep也不会按预期运行-始终引用shell元字符
    awk -F"\t" '($4+0==$4) && ($4 < 1E-5){c++}END{print c}' file