1

bash では、小数 (分数) の数値を使用して条件をコーディングしようとしています。その後、bash で小数を計算できないことがわかりました。私が持っているスクリプトは次のとおりです。

 a=$(awk '/average TM cross section = / {CCS=$6}; END {printf "%15.4E \n",CCS}' ${names}_$i.out)
 a=$(printf '%.2f\n' $a)
 echo $a

ファイルでは*.out、数字は科学表記法です。最後echo $aに、数値 245.35 (またはファイル内の他の数値) が得られます。それで、bashで条件付きを実行できるように、出力番号245.35を24535に変更する方法を考えていました。

乗算しようとしましたが、明らかにうまくいきませんでした。誰でもこの変換を手伝ってもらえますか?

4

3 に答える 3

1

算術以外bashの何かを使用するのが最善かもしれません-もう少し力のあるものを呼び出してください。次のリンクは、刺激的または恐ろしいものです。http: //blog.plover.com/prog/bash-expr.html(「シェルスクリプトの算術式」)およびhttp://blog.plover.com/prog/ spark.html( "bashでの非常識な計算"); これは、bashベースの算術演算を真剣に行おうとすると、最終的にはそうなる可能性があるようなものだと思います。特に、to_rationalこれらの記事の2番目の関数には、正規表現を使用して小数を分割するためのコードが含まれていますが、彼はあなたが思っているよりも複雑なことをしています。

于 2012-04-30T21:35:46.297 に答える
1

私たちの長い会話によると

 a=$(awk '/average TM cross section = / {CCS=$6}; END {printf "%15d\n",CCS * 100}' ${names}_$i.out)

これで、出力は整数になります。

awk は、大きなファイルの処理とロジックのテストに適した設計になっていることに注意してください。処理のすべて/ほとんどを 1 つの awk プロセスで実行できる可能性があります。大量のデータを処理している場合、時間を大幅に節約できます。

これが役立つことを願っています。

于 2012-05-01T00:34:27.740 に答える
0

あなたから提供された情報によると、これは算術演算とは関係ありません。

string として扱います。小数点を見つけて削除します。それは私が理解していることです

http://www.cyberciti.biz/faq/unix-linux-replace-string-words-in-many-files/

http://www.thegeekstuff.com/2010/07/bash-string-manipulation/

于 2012-04-30T21:34:35.857 に答える