Я должен распечатать следующие значения с printf как follwoing вокруг подобного это:
printf "[`date +%d"/"%b"/"%G"-"%T`] [WARN] $PARAM1 $PARAM2 $PARAM3
Необходимый вывод:
[02/Jun/2010-11:08:42] [WARN] val1....val2...val3
разрыв между val1 к val2 и от val2 до val3 должен быть разрывом константы не, зависят длина значений
printf "%s [WARN] %s %s %s\n" `date +"%d/%b/%G-%T"` foo bar baz
Не понимаю, что вы имели в виду под постоянным разрывом. Если это ширина столбца для foo
, bar
и baz
, попробуйте % 13s
, где 13 - минимальная ширина столбца.
Я понял ваш вопрос. Используя другой ответ в качестве основы для своего:
Если вы хотите заполнить каждый из PARAM'ов, то просто добавьте числовой аргумент к printf, и он заполнит его до этого количества символов на поле.
Вставьте 20 символов:
printf "%s [WARN] %20s %20s %20s" date +"%d/%b/%G-%T"
foo bar baz
Примеры:
printf "%s [WARN] %16s %16s %16s" [`date +"%d/%b/%G-%T"`] foo bar baz
02/Jun/2010-11:22:54 [WARN] foo bar baz
Длиннее...
printf "%s [WARN] %16s %16s %16s" [`date +"%d/%b/%G-%T"`] longerfoo longerbar longerbaz
02/Jun/2010-11:23:42 [WARN] longerfoo longerbar longerbaz
Намного длиннее...
printf "%s [WARN] %16s %16s %16s" [`date +"%d/%b/%G-%T"`] muchlongerfoo muchlongerbar muchlongerbaz
02/Jun/2010-11:24:12 [WARN] muchlongerfoo muchlongerbar muchlongerbaz
Попробуйте это на консоли. Работает.