Я использую awk просто для изменения некоторого текста в файле, сохраняя при этом значения в том виде, в каком они в данный момент находятся в файле.
Проблема в том, что некоторые значения меняются. значения сохраняются, если я использую % f
- однако я хотел бы удалить ненужные завершающие нули. Это достигается для большинства значений при использовании % g
, но % g
вызывает преобразование некоторых значений в научные числа, что мне не нужно.
Есть ли способ одновременно печатать числа в новом файле без конечных нулей, а также не преобразовывать числа в экспоненциальное представление?
Примеры:
Когда я применяю следующее к изменяемому файлу при использовании % f
:
(rline == 4) {printf("%f\t %s\n",$1,"gsurf_intercept")}
получается:
1000000.000000 gsurf_intercept
когда я использую параметр % g
:
(rline == 4) {printf("%g\t %s\n",$1,"gsurf_intercept")}
, получается:
1e+06 gsurf_intercept
то, что я хочу:
1000000 gsurf_intercept
Кроме того, я применил это к 70 строкам в файле, который я изменяю, и я хотел бы, чтобы в результирующем файле было два столбца, каждый столбец выровнен. Я обнаружил, что не каждый элемент совпадает с тем, который находится выше или ниже - это происходит, когда элемент в первом столбце является строкой, и я использую для него % s
.
Вы можете преобразовать число с плавающей точкой в целое число и распечатать его. Конечных нулей не будет, и вы сможете печатать с кодом формата% d или% ld.
Я думаю, что изменение% f на% d может помочь, однако без необходимости выполнять преобразование явно (т.е. пусть printf сделает преобразование).