私は持っていますファイル1.txt
0.1234
0.333
0.22
0.1
そしてファイル2.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桁を生成します。
ベストアンサー1
awk 実装が基本 C ライブラリの動的幅と精度機能へのアクセスを提供する場合、数値にはfile1.txt
仮数指数表現を含めることはできません。1.23e4
、次のようなことができます。
$ paste file1.txt file2.txt |
awk '{split($1,a,/[.]/); printf "%.*f\n", length(a[2]), ($1 * $2)}'
0.2468
3.330
22.00
10.0
それとも、もっと強力なものかもしれません。
paste file1.txt file2.txt |
awk '{l = (match($1,/[.][[:digit:]]+/) > 0) ? RLENGTH-1 : 0;
printf "%.*f\n", l, ($1 * $2)
}'