Помощь с использованием Awk для изменения файла [closed]

Я использую 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 .

2
задан 10 April 2013 в 21:00

1 ответ

Вы можете преобразовать число с плавающей точкой в ​​целое число и распечатать его. Конечных нулей не будет, и вы сможете печатать с кодом формата% d или% ld.

Я думаю, что изменение% f на% d может помочь, однако без необходимости выполнять преобразование явно (т.е. пусть printf сделает преобразование).

0
ответ дан 10 April 2013 в 21:00

Другие вопросы по тегам:

Похожие вопросы: