2015-12-01 6 views
1

У меня возникла проблема с использованием printf в моей системе unix. Он бросает ошибку каждый раз, когда я пытаюсь напечатать следующиеprintf не печатает прошлое '.' в строке

printf "%-15s %-15.2s" "Total Acounts:\nChecks=$" checks 

проверка должна быть десятичной, но я попробовал напечатать его как поплавок и десятичная и получить ту же ошибку.

fatal: not enough arguments to satisfy format string 
    `%-15s %-15.2sTotal Acounts: 
    Checks=$2135.92' 
       ^

Я работаю над этим какое-то время и не могу понять, поэтому любая помощь приветствуется.

+1

Является ли 'проверка' переменной? Разве вы не хотите использовать '$ checks'? –

+0

Проверки - это переменная. Извините, я должен был сказать, что это awk-скрипт, и – GrapeSoda3

ответ

5

Это не то, как вы звоните printf в awk. Вам не хватает запятых, указывающих аргументы.

Вы дали printf только формат строки (конкатенацию "%-15s %-15.2s", "Total Acounts:\nChecks=$" и значение checks).

Как вы можете видеть из сообщения об ошибке, которое показывает всю строку как строку формата и включает в себя значение checks.

вероятно Вы имели в виду:

printf "%-15s %-15.2s", "Total Acounts:\nChecks=$", checks 
#---------------------^---------------------------^ 

хотя %-15s есть на самом деле не делает ничего полезного для вас, как ` "Всего Acounts: \ nChecks = $" длиннее 15 символов.

+0

не будет последним токеном '% 15.2f' для учета денег в' чеках'? Всем удачи. – shellter

+0

@shellter Я согласен, что '% s' есть потенциально странно, но это был код OPs, и я не собирался его менять. –

+0

Я ожидал ошибку с этим тестом: 'awk 'END {printf ("% s \ t% -15.2s \ n "," string ", 2350.88)}'/dev/null', но вернул строку' 23. Хм, это какая-то ошибка; Идите фигуру. – shellter