我需要使用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之间的间隙必须是const间隙 不依赖于值的长度
答案 0 :(得分:1)
printf "%s [WARN] %s %s %s\n" `date +"%d/%b/%G-%T"` foo bar baz
不确定你的差距是什么意思。如果是foo
,bar
和baz
的列宽,请尝试%13s
,其中13是最小列宽。
答案 1 :(得分:1)
我理解你的问题。 使用另一个答案作为我的基础:
如果你想填充每个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
在控制台上试用。它有效。