浮動小数点数を10進数に変換

浮動小数点数を10進数に変換

ディレクトリには複数の "ascii"テーブルがあり、そのうちのいくつかは小数点で表される数字を持ち、いくつかは次のように浮動小数点で表される数字を持っています。

1 1 1423
1 2 1589
1 3 0.85e 5
1 4 0.89e 4
1 5 8796
...

テーブルのすべての値を10進数に変換する方法はありますか?エディタを使うと効果があると聞きましたが、tr変換の仕方がわかりません。

ベストアンサー1

このsedスクリプトは、「e」の後のスペースを削除し、awk各フィールドのみを印刷します($ 3に1を掛けると、fpではなく10進数に「変換」されます)。

$ sed -e 's/e /e/g' file | awk '{print $1, $2, $3 * 1}'
1 1 1423
1 2 1589
1 3 85000
1 4 8900
1 5 8796

これはファイルの浮動小数点数を仮定します。

  1. "e"の後に余分なスペースがあります。
  2. 正の指数の場合は「+」を省略します。
  3. 非常に大きな指数はありません。それ以外の場合はawkfpとして印刷されます。

awk's/e /e/' 変換が可能ですsedが(だから必要ありません)、遅すぎて脳が疲れました。 sed | awkシンプルで効果的です。

おすすめ記事