Печать значений в специальном формате с использованием printf - PullRequest
1 голос
/ 02 июня 2010

Мне нужно напечатать следующие значения с printf следующим образом:

printf "[`date +%d"/"%b"/"%G"-"%T`] [WARN] $PARAM1 $PARAM2 $PARAM3

Требуемый вывод:

[02/Jun/2010-11:08:42] [WARN]  val1....val2...val3

разрыв между val1 до val2 и от val2 до val3 должен быть постоянным не зависит длина значений

Ответы [ 2 ]

1 голос
/ 02 июня 2010

Я понимаю ваш вопрос. Используя другой ответ в качестве основы для моего:

Если вы хотите заполнить каждую из ПАРАМ, просто добавьте числовой аргумент в printf, и он будет дополнять это количество символов в поле.

Pad на 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

Longer ...

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

Попробуйте это на консоли. Это работает.

1 голос
/ 02 июня 2010
printf "%s [WARN] %s %s %s\n" `date +"%d/%b/%G-%T"` foo bar baz

Не уверен, что вы имели в виду под постоянным разрывом. Если это ширина столбца для foo, bar и baz, попробуйте %13s, где 13 - минимальная ширина столбца.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...