awk деление без округления - PullRequest
1 голос
/ 22 апреля 2020

Я работаю над файлом, который содержит серию десятичных значений с различной точностью. Мне нужно разделить эти числа на 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

Заранее спасибо

Ответы [ 2 ]

3 голосов
/ 22 апреля 2020

интересная проблема, так как вы хотите разную точность для разных чисел. Вот один из обходных путей

$ 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

может потребоваться настроить для отрицательных чисел ...

1 голос
/ 22 апреля 2020

Не могли бы вы попробовать следующее.

awk '{sub(/\./,".00")} 1' Input_file


С оригинальной командой OP:

awk '{val = $1 / 100; sub(/\./,".00",val);print val}' input_file.txt
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...