如何用 BASH 减去从另外 2 个文件中提取的 2 个浮点数

如何用 BASH 减去从另外 2 个文件中提取的 2 个浮点数

我试图找出从两个文件中获取的两个数字之间的差异。我认为我的代码是有意义的:

我尝试用两种不同的方法让它工作,但没有成功。我得到的输出为零 (0)。

#method 1
difference_btwn_eng_hrs_MX3_122=$(($(sed -n '1p' engine_hours_new_MX3_122.txt)-$(sed -n '1p' engine_hours_old_MX3_122.txt)))
echo "$difference_btwn_eng_hrs_MX3_122"

#method 2
new=$(sed -n '1p' engine_hours_new_MX3_122.txt)
old=$(sed -n '1p' engine_hours_old_MX3_122.txt)
echo "$new $old" | awk '{print $new - $old}'

最终我将使用差异来设置电子邮件更新的间隔。

文件内的值是 511.786(新)和 509.768(旧),我从终端得到的错误如下:

line 40: 511.786-509.765: syntax error: invalid arithmetic operator (error token is ".786-509.765")

答案1

第一个示例的问题是bash只能对整数进行操作,而您的第二次尝试awk根本不正确。

我建议用于bc这项工作:

bc <<< "$new-$old"

<<<就是所谓的这里的字符串,并且它基本上是较短的形式echo "$new-$old" | bc

awk如果您愿意,您还可以修改命令:

echo "$new $old" | awk '{print $1-$2}'

或(使用这里的字符串如上):

awk '{print $1-$2}' <<< "$new $old"

相关内容