Bash

如何用 BASH 減去從其他 2 個文件中提取的 2 個浮點數

  • February 13, 2015

我試圖從兩個文件中獲取兩個數字之間的差異。我認為我的程式碼會有意義:

我試圖通過兩種不同的方法使其工作,但沒有奏效。我得到的輸出為零(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")

第一個範例的問題是bash只能對整數進行操作,而您的第二次嘗試awk根本不正確。

我建議bc用於這項工作:

bc <<< "$new-$old"

<<<這裡所謂的字元串,基本上是較短的形式echo "$new-$old" | bc

如果你願意,你也可以修改你的awk命令:

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

或(如上使用此處的字元串):

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

引用自:https://unix.stackexchange.com/questions/184360