Bash
如何用 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")
第一個範例的問題是
bash
只能對整數進行操作,而您的第二次嘗試awk
根本不正確。我建議
bc
用於這項工作:bc <<< "$new-$old"
<<<
這裡所謂的字元串,基本上是較短的形式echo "$new-$old" | bc
。如果你願意,你也可以修改你的
awk
命令:echo "$new $old" | awk '{print $1-$2}'
或(如上使用此處的字元串):
awk '{print $1-$2}' <<< "$new $old"