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
我有一些这种形式的数据:
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