gpt4 book ai didi

bash - 为什么 awk 将指数转换为普通整数?

转载 作者:行者123 更新时间:2023-12-02 18:14:14 25 4
gpt4 key购买 nike

这可能是关于awk处理指数的一个非常基本的问题。

我的输入行是:

1.047788047990001417e+02 2.931134551062188009e+01 3.669999999999999929e+00

我想在第三个位置添加 -1000,但采用指数格式,所以首先我转换格式。

dept=$(echo -1000 | awk '{printf "%.7e\n", $1}')

但是当我尝试使用 catawk 将其插入到上面的行中时,它会转换回正常整数。

cat $line | awk '{print $1 ,$2 ,'$dept', $3}'

我得到了这个输出:

1.048020560949027811e+02 2.976214868620721887e+01 -1000 6.065999999999999837e+00

请您指出我哪里做错了或者我该如何纠正?除此之外,是否有任何选项可以限制e之前的7位小数?

例如理想预期输出应该是这样的:

1.0480205e+02 2.9762148e+01 -1.0000000e+03 6.0659999e+00

最佳答案

默认情况下,即使您使用指数表示法输入整数,也会将整数打印为整数。如果您希望对其进行格式化,请使用printf()

cat "$line" | awk -v dept=-1.0000000e+03 '{printf("%e %e %e %e\n", $1, $2, dept, $3)}'

使用 -v 选项将 shell 变量转换为 awk 变量,而不是将该变量替换到 awk 脚本中。

关于bash - 为什么 awk 将指数转换为普通整数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71851572/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com