awk не округляется с OFMT и $ 0

m печатать массив из 100 столбцов, и я хотел бы, чтобы все столбцы имели 2 десятичных знака. Я хотел бы использовать print $ 0 и не нужно индивидуально указывать формат для всех столбцов.

OFMT работает с $ 0:

echo '0.77767686 0.76555555 0.6667667 0.77878878' |awk '{CONVFMT="%.2g";OFMT="%.2g";print ($0+0);print ($0+0)"";print $0}' 

Результаты:

0.78
0.78
0.77767686 0.76555555 0.6667667 0.77878878
 TrueY25 апр. 2013 г., 11:52
$0 это строка, а не число! использование$1...$4

Ответы на вопрос(3)

Почему Дон'т вы используетеfor цикл?

echo '0.77767686 0.76555555 0.6667667 0.77878878' |awk '{ for (i=1; i

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

OFMT используется, когда строки преобразуются в числа, например:

< 0.77767686 awk '{ print 0+$0 }' OFMT='%.2g'

Как уже упоминали другие, вам нужно рассматривать поле как число, чтобы получить преобразование. Чтобы объединить некоторые другие идеи, вы можете попробовать:

awk '{ for (i=1; i

Ваш ответ на вопрос