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