计算记录的指数值

时间:2017-01-01 22:51:06

标签: awk

我需要在乘以因子-0.05后计算并打印字段$2的记录的指数值。

数据如下所示:

101   205   560  
101   200   530  
107   160   480  
110   95    600

我需要输出看起来像这样:

101 205  560   0.000035  
101 200  530   0.000045   
107 160  480   0.00033    
110 95   600   0.00865  

1 个答案:

答案 0 :(得分:2)

这应该有效:

$ awk '{ print $0, sprintf("%f", exp($2 * -0.05)) }' infile
101 205 560 0.000035
101 200 530 0.000045
107 160 480 0.000335
110 95 600 0.008652

这只打印整行$0,然后是第二个字段的指数乘以-0.05。 sprintf格式化确保结果不以科学记数法打印(否则会发生)。

如果输入数据是制表符分隔的,并且您还需要输出中的制表符,则必须先设置输出字段分隔符:

$ awk 'BEGIN{OFS="\t"} { print $0, sprintf("%f", exp($2 * -0.05)) }' infile
101     205     560     0.000035
101     200     530     0.000045
107     160     480     0.000335
110     95      600     0.008652