2015-10-04 3 views
-2

Я проверял кусок кода, и я не могу полностью понять:Bash Awk команда путанице

var1=`awk -F , '{printf "%.0f\n", $1*17/1000}' $somefile`; 

Допустим, что число он получает из файла 1000, умножает его на 17 и водоразделов на 1000, но до этого есть следующее: "%.0f\n" Я знаю, как идут вычисления, но эта часть меня смущает. Насколько я понимаю, он вычисляет что-то о чем-то и печатает новую строку. Понятно, что ответ с ямой объяснения команды awk в целом будет оценен: D

+1

Вы даже прочитали руководство и посмотрели функцию 'printf'? –

+0

Да и вот почему я так смущен, ничего не объяснил – BonBon

+1

На самом деле это все объясняет! ''% .0f "' - это формат (он называется fmt на моей странице man). Затем, переходя к разделу _printf Statement_, я вижу, что '% f' - это формат для числа с плавающей запятой _A. Ниже этого я читаю _ дополнительные параметры могут находиться между% и контрольной буквой_ и немного ниже, чем я вижу: '.prec Число, которое указывает точность, которую следует использовать при печати. Для форматов% e,% E,% f и% F это указывает количество цифр, которое вы хотите напечатать справа от десятичной точки. «Вы уверены, что даже прочитали руководство? –

ответ

1

Он устанавливает число десятичных точек в ноль (обрезает число) после вычисления. Вы можете найти более подробную информацию here

Вы можете попробовать его самостоятельно, набрав

awk -F, '{printf "%.0f\n", $1*17/1000}' 

в командной строке, он будет конвертировать вход для каждой введенной строки, но, возможно, это будет более интуитивным. (Control-D для выхода)

awk -F, '{printf "%.0f\n", $1}' 

пс. Обратите внимание, что это эквивалентно целочисленному форматированию% d или% i (без десятичных точек)

+0

Спасибо: D Но ссылка вашего сайта не работает: http: // www.awk -f, '{printf "% 25.0f \ n", $ 1 * 17/1000}' Я не думаю, что Awk работает с этим форматом;) – BonBon

+0

у вас должен быть 'awk' установлен локально, также прописной F не строчный, – karakfa

+0

Ooops, извините, фиксированная ссылка. – karakfa