UNIX 中的浮点数到科学格式

Floating Point to Scientific Format in UNIX

我有一些这种形式的数据:

0.123456 11.234567 -22.345678
-3.456789 4.567891 -5.678912 etc

我想把它们转换成一个8列的矩阵,科学格式带+-号,小数点前1位,小数点后6位,如:

+0.123456E+00 +1.123456E+01  -2.234567E+01 etc

我已经尝试过类似的方法,但它不起作用:

sed -n '31,46p' $filename1|xargs -n8|printf "%13.6e" >>file2.txt

有什么想法吗?

我会用这个:

xargs -n 8 < file | awk '{for (i=1;i<NF;i++) printf ("%13.6e%s", $i, FS); printf ("%13.6e\n", $NF)}'
  • xargs -n X < file 来自你之前的问题:
  • awk '{for (i=1;i<NF;i++) printf ("%13.6e%s", $i, FS); printf ("%13.6e\n", $NF)}' 循环遍历一行中的项目,并以特定格式 %13.6e 打印它们,连同 space。然后,它打印最后一个字段和一个新行。

查看测试

$ cat a
0.123456 11.234567 -22.345678
-3.456789 4.567891 -5.678912
2.342 23.111 123.23 22
$ xargs -n 8 < a | awk '{for (i=1;i<NF;i++) printf ("%13.6e%s", $i, FS); printf ("%13.6e\n", $NF)}'
1.234560e-01  1.123457e+01 -2.234568e+01 -3.456789e+00  4.567891e+00 -5.678912e+00  2.342000e+00  2.311100e+01
1.232300e+02  2.200000e+01