4

如何 printf 像表格一样对齐我的输出?

Title                                             Author
BaokyBook                                              Baoky2
Use basename commandUse basename command ..             Baoky

我的部分代码是这样的

titlelength=${#title};

首先我得到标题长度,然后我像这样 printf

titlespace=`expr 60 - titlelength`;
printf "%s %${titlespace}s\n" "$title" "$author"

但是对齐不正确,我如何让它很好地对齐

回复以下答案:

进行更改后

我所有的左边都向右对齐。它似乎不起作用。

4

1 回答 1

4

最简单的方法是以固定宽度打印标题:

printf "%30s %s\n" "$title" "$author"

如果要确定最大宽度,则需要在进行任何输出之前读取所有数据。或者您可以简单地将输出通过管道传输到column -t. 或者,将标题截断为所选宽度(这种截断字符串的技术是一种 bashism):

 printf "%30s %s\n" "${title:0:30}" "$author"
于 2012-07-18T17:48:15.687 回答