2012-07-18 309 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