スペースで区切られたファイルがあります。ファイルには指数形式の数値とテキストが含まれています。指数を実際の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以上を使用して(10001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
999999999999999977709969731404129670057984297594921577392083322662491290889839886077866558841507631684757522070951350501376
-M -v PREC=1000
少し)
答え2
この試み
echo "3.85196e+06" | perl -ne 'printf "%d\n", $_;'