Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > *NIX системы: Общие вопросы > awk - разделитель десятичных чисел при выводе?


Автор: d2e8k 20.9.2005, 12:01
Добрый день!
Вот такая проблемка -
awk -v a=.5 -v b=.7 'BEGIN {print a+b}' - в этом случае будет выведено "1,2" (именно с разделителем запятой! )
Если этот результат (через sh-переменную) использовать в следующем awk - скрипте , то уже получится ерунда:
awk -v a=.5 b=1, 2 'BEGIN {print a+b}' получим "1,5"... Как я понимаю, awk второе значение ("1,2") считает строкой, преобразовывает в число (1), а уже после складывает. Вопрос в том, как заставить его выводить десятичные числа с разделителем точкой, а не запятой, т.е. чтобы в первом примере вывелось "1.2"?
ОС - Alt Linux Compact 2.3

Автор: DENNN 20.9.2005, 13:09
Могу предложить через sed заменять запятые на точки.

Автор: setq 20.9.2005, 13:31
обязательно использовать именно awk?

Автор: d2e8k 20.9.2005, 15:04
Спасибо! sed помог

Автор: Бонифаций 20.9.2005, 15:15
Цитата(d2e8k @ 20.9.2005, 12:01)
Добрый день!
Вот такая проблемка -
awk -v a=.5 -v b=.7 'BEGIN {print a+b}' - в этом случае будет выведено "1,2" (именно с разделителем запятой! )
Если этот результат (через sh-переменную) использовать в следующем awk - скрипте , то уже получится ерунда:
awk -v a=.5 b=1, 2 'BEGIN {print a+b}' получим "1,5"... Как я понимаю, awk второе значение ("1,2") считает строкой, преобразовывает в число (1), а уже после складывает. Вопрос в том, как заставить его выводить десятичные числа с разделителем точкой, а не запятой, т.е. чтобы в первом примере вывелось "1.2"?
ОС - Alt Linux Compact 2.3

похоже для формирования десятичного разделителя awk использует установки locale , а locale у вас наверное русское. smile поэтому по правилам русской локали десятичным разделителем является запятая а не точка.

В частности я бы попробовал запустить так:

Код


LC_NUMERIC=С вашапрограмма



и посмотрел что получится.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)