awk - раунд до 2 десятичных знаков

Восстановите диски с помощью lvm, а затем синхронизируйте их с lvmsync. https://github.com/mpalmer/lvmsync

4
задан 23 May 2017 в 15:39

5 ответов

Вы неправильно понимаете синтаксис команды printf (который внимательно следит за функцией основной функции C: см., например, man 3 printf для полной документации).

printf принимает форматированная строка, состоящая из последовательности спецификаторов формата и других буквенных символов, за которой следует как можно больше аргументов, разделенных запятыми, для заполнения данного формата. В вашей команде

printf "%s,%d,%0.2f%\n",c[i]"\t"a[i]"\t"100*b[i]/x"%"

вы говорите ей, чтобы ожидать 3 значения (a %s, %d и %0.2f), но дают ему один, конкатенированный строковый аргумент [ f10]. Следовательно, у вас не будет аргументов во время назначения.

То, что вы предположительно предназначаете, это

printf "%s\t%d\t%0.2f%%\n", c[i], a[i], 100*b[i]/x

(вкладки идут внутри строки формата, %% соответствует буквалу %, т.е. предотвращает интерпретацию % как начало другого спецификатора формата).

7
ответ дан 22 May 2018 в 23:39
  • 1
    Большое вам спасибо за ваше объяснение и вашу помощь! Теперь все имеет смысл, и я понимаю это наконец! Кроме того, решение отличное и прекрасно работает как всегда! Я очень ценю ваши усилия! Спасибо огромное! – dani_anyman 14 April 2017 в 19:21

Вы неправильно понимаете синтаксис команды printf (который внимательно следит за функцией основной функции C: см., например, man 3 printf для полной документации).

printf принимает форматированная строка, состоящая из последовательности спецификаторов формата и других буквенных символов, за которой следует как можно больше аргументов, разделенных запятыми, для заполнения данного формата. В вашей команде

printf "%s,%d,%0.2f%\n",c[i]"\t"a[i]"\t"100*b[i]/x"%"

вы говорите ей, чтобы ожидать 3 значения (a %s, %d и %0.2f), но дают ему один, конкатенированный строковый аргумент c[i]"\t"a[i]"\t"100*b[i]/x"%". Следовательно, у вас не будет аргументов во время назначения.

То, что вы предположительно предназначаете, это

printf "%s\t%d\t%0.2f%%\n", c[i], a[i], 100*b[i]/x

(вкладки идут внутри строки формата, %% соответствует буквалу %, т.е. предотвращает интерпретацию % как начало другого спецификатора формата).

7
ответ дан 18 July 2018 в 14:59

Вы неправильно понимаете синтаксис команды printf (который внимательно следит за функцией основной функции C: см., например, man 3 printf для полной документации).

printf принимает форматированная строка, состоящая из последовательности спецификаторов формата и других буквенных символов, за которой следует как можно больше аргументов, разделенных запятыми, для заполнения данного формата. В вашей команде

printf "%s,%d,%0.2f%\n",c[i]"\t"a[i]"\t"100*b[i]/x"%"

вы говорите ей, чтобы ожидать 3 значения (a %s, %d и %0.2f), но дают ему один, конкатенированный строковый аргумент c[i]"\t"a[i]"\t"100*b[i]/x"%". Следовательно, у вас не будет аргументов во время назначения.

То, что вы предположительно предназначаете, это

printf "%s\t%d\t%0.2f%%\n", c[i], a[i], 100*b[i]/x

(вкладки идут внутри строки формата, %% соответствует буквалу %, т.е. предотвращает интерпретацию % как начало другого спецификатора формата).

7
ответ дан 24 July 2018 в 20:31

Вы неправильно понимаете синтаксис команды printf (который внимательно следит за функцией основной функции C: см., например, man 3 printf для полной документации).

printf принимает форматированная строка, состоящая из последовательности спецификаторов формата и других буквенных символов, за которой следует как можно больше аргументов, разделенных запятыми, для заполнения данного формата. В вашей команде

printf "%s,%d,%0.2f%\n",c[i]"\t"a[i]"\t"100*b[i]/x"%"

вы говорите ей, чтобы ожидать 3 значения (a %s, %d и %0.2f), но дают ему один, конкатенированный строковый аргумент c[i]"\t"a[i]"\t"100*b[i]/x"%". Следовательно, у вас не будет аргументов во время назначения.

То, что вы предположительно предназначаете, это

printf "%s\t%d\t%0.2f%%\n", c[i], a[i], 100*b[i]/x

(вкладки идут внутри строки формата, %% соответствует буквалу %, т.е. предотвращает интерпретацию % как начало другого спецификатора формата).

7
ответ дан 31 July 2018 в 12:47

Вы неправильно понимаете синтаксис команды printf (который внимательно следит за функцией основной функции C: см., например, man 3 printf для полной документации).

printf принимает форматированная строка, состоящая из последовательности спецификаторов формата и других буквенных символов, за которой следует как можно больше аргументов, разделенных запятыми, для заполнения данного формата. В вашей команде

printf "%s,%d,%0.2f%\n",c[i]"\t"a[i]"\t"100*b[i]/x"%"

вы говорите ей, чтобы ожидать 3 значения (a %s, %d и %0.2f), но дают ему один, конкатенированный строковый аргумент c[i]"\t"a[i]"\t"100*b[i]/x"%". Следовательно, у вас не будет аргументов во время назначения.

То, что вы предположительно предназначаете, это

printf "%s\t%d\t%0.2f%%\n", c[i], a[i], 100*b[i]/x

(вкладки идут внутри строки формата, %% соответствует буквалу %, т.е. предотвращает интерпретацию % как начало другого спецификатора формата).

7
ответ дан 31 July 2018 в 23:33

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

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