2012-07-18 18 views
4

如何将printf与表格对齐?Shell编程 - 如何将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" 

但对齐是不对的,我怎么弄它工作得很好对齐

回复以下回答:

做出更改后

我所有的左侧都对齐到右侧。它似乎不工作。

+0

要获得左对齐,请在格式前加上短划线('-')下面的答案变成'printf'%-30s%s \ n“”$ title“”$ author“'。请注意'%-30s'中的'-'。 – ntc2 2012-07-18 23:28:10

回答

4

最简单的事情将是打印在一个固定的宽度标题:

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

如果要确定最大宽度,你需要做的任何输出前阅读所有的数据。或者你可以简单地将你的输出输出到column -t。或者,将标题截断为所选的宽度(这种截断字符串的方法是双击):

printf "%30s %s\n" "${title:0:30}" "$author" 
+0

得到了一些问题。 – 2012-07-18 18:36:28

+0

截断版本在/ bin/sh上给出了“坏取代”。 – limovala 2013-08-05 07:08:26

+0

语法'$ {a:0:30}'是一种抨击,在大多数其他shell中不起作用。 '坏代换'会表明shell不是'bash'。 – 2013-08-05 12:21:18