我正在处理一个包含一系列不同精度的十进制值的文件,我需要将这些数字除以100,而且我不需要四舍五入。
awk '{val = $1 / 100; print val}' input_file.txt
输入文件。
0.123456789012
0.123456789012345
0.12345678901234567
输出:
0.00123457
0.00123457
0.00123457
我想不对结果进行四舍五入,得到以下输出。
0.00123456789012
0.00123456789012345
0.0012345678901234567
先谢谢你
很有趣的问题,因为你希望不同的数字有不同的精度。 这里有一个变通的方法
$ awk '{d=length($1); printf "%."d"f\n", $1/100}' file
0.00123456789012
0.00123456789012345
0.0012345678901234567
这也应该涵盖大于1的数字。
$ awk '{d=length($1); if($1>1) d+=1-length(int($1)); printf "%."d"f\n", $1/100}' file
可能需要调整负数......
你能不能试试下面的命令。
awk '{sub(/\./,".00")} 1' Input_file
用OP的原始命令。
awk '{val = $1 / 100; sub(/\./,".00",val);print val}' input_file.txt