问题描述
我有一个包含一些负值的简单文本文件:
sample.txt
-61.68
-69.00
-90.93
-95.25
需要计算如下数学运算:
result1 = exp(ln(10)* -61.68/10)
result2 = exp(ln(10)* -69.00/10) + exp(ln(10)* -90.93/10) + exp(ln(10)* -95.25/10)
result = result1/result2
解决方法
如果您转置这些值,即将它们放在一行上,然后再将它们交给 awk
,它将变成一个简单的转录,例如:
calc.awk
{
print \
exp(log(10) * $1/10) /\
(\
exp(log(10) * $2/10) \
+ exp(log(10) * $3/10) \
+ exp(log(10) * $4/10) \
)
}
像这样运行:
<sample.txt paste -s | awk -f calc.awk
输出:
5.34813
注意 awk 中的 log()
取自然对数。