在使用零的情况下,awk计算失败

在使用零的情况下,awk计算失败,awk,Awk,我正在使用awk计算每个id的%,使用下面的函数,该函数运行且非常接近,除非计算中使用的为零。我不知道如何将这种情况编码到awk,因为这种情况经常发生。谢谢:) file1 ABCA2 9 232 ABHD12 211 648 ABL2 83 0 文件2 CC2D2A 442 (CCDC114) 0 带错误的awk awk 'function ceil(v) {return int(v)==v?v:int(v+1)} > NR==FNR{f1[$1]=$2; next}

我正在使用
awk
计算每个
id
%
,使用下面的函数,该函数运行且非常接近,除非计算中使用的
为零。我不知道如何将这种情况编码到
awk
,因为这种情况经常发生。谢谢:)

file1

ABCA2 9 232
ABHD12 211 648
ABL2 83 0
文件2

CC2D2A 442
(CCDC114) 0
带错误的awk

awk 'function ceil(v) {return int(v)==v?v:int(v+1)}
>         NR==FNR{f1[$1]=$2; next} 
>        $1 in f1{print $1, ceil(10000*(1-f1[$1]/$3))/100 "%"}' all_sorted_genes_base_counts.bed all_sorted_total_base_counts.bed > total_panel_coverage.txt
awk: cmd. line:3: (FILENAME=file1 FNR=3) fatal: division by zero attempted

如果有一个脚本在解析2个输入文件时失败,我无法想象为什么只显示1个示例输入文件而没有预期的输出

  • 我们无法根据您认为相关的样品测试我们的潜在解决方案,并且
  • 我们无法知道我们的剧本是否符合你的要求
  • 但一般来说,为了防止零分母,您会使用如下代码:

    awk '{print ($2 == 0 ? "NaN" : $1 / $2)}'
    
    e、 g


    $3
    为零时,您应该得到什么结果<代码>不适用?很抱歉没有发布这两个输入文件,我将编辑我的帖子。。。。对不起,我正在开会。谢谢:)“不适用”将是完美的。。。谢谢:)。由于
    awk
    没有可管理的被零除异常,只需在被零除之前添加适当的逻辑检测即可。
    $ echo '6 2' | awk '{print ($2 == 0 ? "NaN" : $1 / $2)}'
    3
    
    $ echo '6 0' | awk '{print ($2 == 0 ? "NaN" : $1 / $2)}'
    NaN