首页 > 解决方案 > awk if 0 除以 x 输出 0

问题描述

我有file

chr     gene    start   end     totsites        synWBM  synBF   misWBM  misBF
NC_044998.1     LOC100221041    14582   80739   14237   99      98      284     285
NC_044998.1     DCBLD2  31388   68748   10471   145     149     503     499
NC_044998.1     CMSS1   80874   299341  11061   48      48      179     178
NC_044998.1     FILIP1L 112495  297570  49095   170     173     642     639
NC_044998.1     LOC116808959    287349  289742  3010    0       0       0       0
NC_044998.1     TBC1D23 300404  343805  7190    39      39      153     154
NC_044998.1     NIT2    333622  344667  2828    18      18      63      63
NC_044998.1     TOMM70  346168  368957  4041    27      27      95      95
NC_044998.1     LNP1    371654  380427  2264    27      30      93      90

我正在尝试$10使用$6/$5

awk '$$10 = $6/$5' file

但 awk 不会输出$6 = 0

我想有$6 = 0实例0

标签: awk

解决方案


$6/$5通过附加到记录的末尾,您可以很容易地做到这一点。例如:

awk 'FNR>1 { print $0"\t"$6/$5 }' file

FNR>1将跳过第一行,你可以用规则输出它FNR==1 {print $0},或者只是FNR==1 {print} ,如果你喜欢)

示例输出

使用您的数据file,以上将产生:

NC_044998.1     LOC100221041    14582   80739   14237   99      98      284     285     0.00695371
NC_044998.1     DCBLD2  31388   68748   10471   145     149     503     499     0.0138478
NC_044998.1     CMSS1   80874   299341  11061   48      48      179     178     0.00433957
NC_044998.1     FILIP1L 112495  297570  49095   170     173     642     639     0.00346267
NC_044998.1     LOC116808959    287349  289742  3010    0       0       0       0       0
NC_044998.1     TBC1D23 300404  343805  7190    39      39      153     154     0.0054242
NC_044998.1     NIT2    333622  344667  2828    18      18      63      63      0.00636492
NC_044998.1     TOMM70  346168  368957  4041    27      27      95      95      0.00668151
NC_044998.1     LNP1    371654  380427  2264    27      30      93      90      0.0119258

如果您还有其他问题,请告诉我。


推荐阅读