BASHを使用して他の2つのファイルから抽出された2つの浮動小数点を減算する方法[重複]

BASHを使用して他の2つのファイルから抽出された2つの浮動小数点を減算する方法[重複]

両方のファイルからインポートされた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}'

結局のところ、diffを使って電子メールの更新間隔を設定します。

ファイルの内部値は511.786(新規)、509.768(既存)で、端末からのエラーは次のとおりです。

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

答え1

最初の例の問題はbash整数でのみ機能し、2番目の試みawkはまったく正確ではないことです。

bcこの職業に推奨するもの:

bc <<< "$new-$old"

<<<それはまさにいわゆるここにある文字列で、基本的に短い形式ですecho "$new-$old" | bc

awk必要に応じてコマンドを変更することもできます。

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

または(使用ここにある文字列上記のように):

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

関連情報