我需要在乘以因子-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
答案 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