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

时间:2016-05-23 14:50:35

标签: awk

我正在使用awk使用下面的%来计算id,除非计算中使用的#为零,否则它会非常接近。我不确定如何将此条件编码到awk中,因为它经常发生。谢谢你:)。

文件1

ABCA2 9 232
ABHD12 211 648
ABL2 83 0

file2的

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

1 个答案:

答案 0 :(得分:3)

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

  1. 我们无法根据您认为相关的样本测试我们的潜在解决方案
  2. 我们无法知道我们的脚本是否正在做你想做的事,
  3. 但一般来说,为了防止零分母,您可以使用以下代码:

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

    e.g。

    $ echo '6 2' | awk '{print ($2 == 0 ? "NaN" : $1 / $2)}'
    3
    
    $ echo '6 0' | awk '{print ($2 == 0 ? "NaN" : $1 / $2)}'
    NaN