2017-01-01 74 views
-2

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

的数据是这样的:

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 

回答

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 
+0

感谢它的工作原理。 – Alula