awkで指数表記法を10進数に変換する

awkで指数表記法を10進数に変換する

スペースで区切られたファイルがあります。ファイルには指数形式の数値とテキストが含まれています。指数を実際の10進値に変換したいです。誰でもこれを達成する方法を提案できますか?

答え1

GNUの使用awk:

gawk -v RS='[-+]?[0-9.]+[eE][-+]?[0-9]+' \
     -v ORS= \
     -v CONVFMT=%.1000g '{print $0 (RT == "" ? "" : +RT)}'

gawkレコード区切り文字一致をRT変数に保存すると、指数なしで浮動小数点数に変換されますCONVFMT

より高い精度のために、例えば1e123に変換するには、gawk 4.1以上を使用して(10001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000999999999999999977709969731404129670057984297594921577392083322662491290889839886077866558841507631684757522070951350501376-M -v PREC=1000少し)

答え2

この試み

echo "3.85196e+06" | perl -ne 'printf "%d\n", $_;'

関連情報