awk如果0除以x输出0

awk如果0除以x输出0,awk,Awk,我有文件 我试着让10美元变成6美元/5美元 但是awk不会输出$6=0的行 我希望有$6=0为0的实例,通过在记录末尾追加$6/$5,您可以非常轻松地完成此操作。例如: awk 'FNR>1 { print $0"\t"$6/$5 }' file FNR>1将跳过第一行,您可以使用规则FNR==1{print$0}或FNR==1{print}输出它,如果您愿意的话 示例输出 将您的数据归档后,上述内容将产生: NC_044998.1 LOC100221041

我有文件

我试着让10美元变成6美元/5美元

但是awk不会输出$6=0的行


我希望有$6=0为0的实例,通过在记录末尾追加$6/$5,您可以非常轻松地完成此操作。例如:

awk 'FNR>1 { print $0"\t"$6/$5 }' file
FNR>1将跳过第一行,您可以使用规则FNR==1{print$0}或FNR==1{print}输出它,如果您愿意的话

示例输出

将您的数据归档后,上述内容将产生:

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

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

您可以很容易地在记录末尾追加$6/$5。例如:

awk 'FNR>1 { print $0"\t"$6/$5 }' file
FNR>1将跳过第一行,您可以使用规则FNR==1{print$0}或FNR==1{print}输出它,如果您愿意的话

示例输出

将您的数据归档后,上述内容将产生:

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

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

如果您的输入文件在任何一行中没有第5个字段,请尝试以下操作,然后在此处添加1个条件以避免致命错误:尝试用零除让我们添加其他检查以避免此错误

awk 'FNR>1 { print $0"\t"($5?$6/$5:"NaN") }' Input_file

如果您的输入文件在任何一行中都没有第5个字段,请尝试以下操作,然后在此处添加1个条件以避免致命错误:尝试零除让我们添加额外检查以避免此错误

awk 'FNR>1 { print $0"\t"($5?$6/$5:"NaN") }' Input_file

awk{print$6/$5}文件awk有一个模式{action}语法。如果你的问题是$6为零的行没有被打印出来,那是因为你使用了一种模式,它本应该是一个动作$10=$6/$5应该在{}内。awk'{print$6/$5}'文件awk有一个模式{action}语法。如果你的问题是$6为零的行没有被打印出来,那是因为你使用了一种模式,它本应该是一个动作$10=$6/$5应该在{}内。@DCR回答得很好,比我的评论好多了。你的评论很好。它准确地显示了问题所在FILENAME=file FNR=1致命:被零除attempted@DCR回答得很好,比我的评论好多了。你的评论很好。它准确地显示了问题所在:FILENAME=file FNR=1致命:尝试除以零在$6/$5有$5==0的情况下,输出将是inf,这可能不会比NA更糟糕?@e2-e4,如果第5个字段是0,那么它也会给出这个致命错误,并且它也包含空值,如果我理解您在这里的评论的话。我把它改成NaN是为了让它更清楚,不是一个数字我想这是他们说的Cheesensnope。如果div为0,Awk不会致命,它会将结果设置为inf。请尝试。为你干杯,我的朋友。然而,对于三元@e2-e4,对于我的GNU awk,如果我给出一个采样线NC_044998.1 a 1234 0 0 10,它会给我一个错误,说awk:cmd。行:1:FILENAME=file1 FNR=11致命:被零除法尝试我已经测试过了如果我没有错,我们在同一页上:谢谢你在这个一个朋友的干杯上进行了很好的对话。我的awk Ubuntu 18.04.7是mawk 1.3.3 1996年11月,版权C Michael D.Brennan如果$6/$5有$5==0,输出将是inf,哪一个可能不比NA更糟糕?@e2-e4,如果第5个字段是0,那么它也会给出这个致命错误,并且它也包含空值,如果我理解你在这里的评论的话。我把它改成NaN是为了让它更清楚,不是一个数字我想这是他们说的Cheesensnope。如果div为0,Awk不会致命,它会将结果设置为inf。请尝试。为你干杯,我的朋友。然而,对于三元@e2-e4,对于我的GNU awk,如果我给出一个采样线NC_044998.1 a 1234 0 0 10,它会给我一个错误,说awk:cmd。行:1:FILENAME=file1 FNR=11致命:被零除法尝试我已经测试过了,如果我没有错,我们在同一页上:谢谢你在这个一个朋友的干杯上进行了很好的对话。我的awk Ubuntu 18.04.7是mawk 1.3.3 1996年11月,版权C Michael D.Brennan