如何用一些 Fortran 风格的 D+01 对数据文件进行排序?

How to sort datafiles with some numbers of Fortran-style D+01?

我有几个 Fortran 数据文件,其中包含格式如下的数字:

-0.53D+02

我想将这些与简单的浮点数据结合起来,例如

-0.53

然后对它们进行排序,就像 Unix sort.

很遗憾 sort 无法识别这种格式,所以我正在寻找一个简单的转换器,但在网上找不到任何东西。我想到了一个 Fortran 脚本并将其从 double precision 转换为 float,但我不太确定位数,这对于 Fortran 来说总是有点乏味。

那么有没有人知道可以执行此操作的脚本、可以读取该格式的排序程序,或者甚至可能只是一个可能有用的简短 sed 命令?我对 sed 不是很好,所以我花了很长时间才弄清楚如何...

我想你可以用这个:

sed 's/D/E/g' YourNumbersFile | sort -g

sed 命令将所有 Ds 更改为 Es - 像这样阅读...... "substitute all Ds with Es, globally" .

sort命令需要-g选项来排序一般数字

如果您的 sort 不接受 -g 开关,我想另一个选择可能是使用此 awk 重新格式化您的号码:

awk '{sub(/D/,"e");printf "%8.3f\n", }' YourNumbersFile | sort -n