循环遍历文件并计算对数和指数函数

问题描述

我有一个包含一些负值的简单文本文件:

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() 取自然对数。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...