我有file1.txt
0.1234
0.333
0.22
0.1
和file2.txt
2
10
100
100
我正在寻找一个命令,该命令将行彼此相乘并输出与 file1.txt 在此位置/行中一样多的小数位。 输出.txt
0.2468
3.330
22.00
10.0
到目前为止我使用这个命令:
paste file1.txt file2.txt | awk '{printf "%.4f", ($1 * $2)}' > output.txt
但是当然“%.4f”总是产生 4 位小数......
如果您的 awk 实现提供对底层 C 库的动态宽度和精度功能的访问,并且其中的数字
file1.txt
永远不能包含像 那样的尾数指数表示1.23e4
,那么您可以执行类似或者更稳健一点
随着
paste
+bc
:输出的小数位数将是两个操作数的最大值,不一定是第一个操作数的小数位数。
管道到
sed -E 's/^(-?)\./\10./'
以0.2468
代替.2468
(或-0.1
代替-.1
)。与
awk
:使用任何 awk: