Bash& Printf:我怎样才能正确填充和截断?

时间:2015-03-30 16:07:05

标签: bash printf padding truncate

在Bash ......

我知道如何使用printf右键填充

printf "%-10s" "potato"

我知道如何使用printf截断

printf "%.10s" "potatos are my best friends"

我怎样才能同时做到这两件事?

LIST="aaa bbbbb ccc ddddd"
for ITEM in $LIST; do
  printf "%-.4s blah" $ITEM
done

打印

aaa blah
bbbbb blah
ccc blah
ddddd blah

我希望它打印

aaa  blah
bbbb blah
ccc  blah
dddd blah

我宁愿不做这样的事情(除非别无选择):

LIST="aaa bbbbb ccc ddddd"
for ITEM in $LIST; do
  printf "%-4s blah" $(printf "%.4s" "$ITEM")
done
但是,显然,这有效(感觉丑陋和黑客)。

1 个答案:

答案 0 :(得分:7)

您可以使用printf "%-4.4s获取输出格式:

for ITEM in $LIST; do printf "%-4.4s blah\n" "$ITEM"; done
aaa  blah
bbbb blah
ccc  blah
dddd blah