2017-01-01 78 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