ファイルの1行に1つの数学方程式を計算する方法は?

ファイルの1行に1つの数学方程式を計算する方法は?

次の内容を含むファイルがあります。

37 * 60 + 55.52
34 * 60 + 51.75
36 * 60 + 2.88
36 * 60 + 14.94
36 * 60 + 18.82
36 * 60 + 8.37
37 * 60 + 48.71
36 * 60 + 34.17
37 * 60 + 42.52
37 * 60 + 51.55
35 * 60 + 34.76
34 * 60 + 18.90
33 * 60 + 49.63
34 * 60 + 37.73
36 * 60 + 4.49

このファイルの各行に対して式を計算し、結果を印刷するシェルコマンドまたはBashスクリプトを作成する必要があります。たとえば、最初の行の場合は、印刷された内容を見たいと思います2275.52。各結果は1行に1回印刷する必要があります。

私はこれを試しましたが、cat math.txt | xargs -n1 exprうまくいきません。これを行うことも可能ですが、awkそのコマンドの構文に慣れていないので、それが何であるかわかりません。

ベストアンサー1

これはawkトリックを行うようです

while IFS= read i; do 
  awk "BEGIN { print ($i) }"
done < math.txt

~からここ

($i)代わりに(対応する算術式の結果を印刷するのではなく、名前付きファイルに印刷します)など$iの算術式関連の問題を回避するために使用します。1 > 2print 1 > 212print (1 > 2)0

シェル変数の拡張により、$i最終的に次のように解釈されます。パスワードによると、awkこれは本質的にコード挿入の脆弱性。ファイルに有効な算術式のみが含まれていると保証できない場合は、いくつかの入力検証を実行する必要があります。たとえば、ファイルに行があると、system("rm -rf ~")重大な結果が生じる可能性があります。

おすすめ記事