2015-02-10 46 views
1

我需要轉換變量,使其具有精確的長度,如果它太短,則將其擴展爲空格,但它太長,然後剪切它。例如。爲11個字符Bash - 強制固定變長,我能比這更容易嗎?

$ var1=a 
$ echo ${#var1} 
1 
$ var1=$(echo $var1 | sed 's/$/   /' | cut -c 1-11) 
$ echo ${#var1} 
11 

變量雖然上述作品,但似乎並沒有爲我需要長串的,所以我在尋找更合適,更優雅一些情況下是非常方便的。

回答

2

使用printf

formatted=$(printf "%11.11s" "$var1") 

例子:

printf "%11.11s\n" "a" 
      a 

printf "%11.11s\n" "abcdefghijklmnop" 
abcdefghijk 

你可以看到它正在輸出精確的11字符長。

+1

這似乎是工作,除了這個事實,是給我的尾隨逗號,但它的作品,當我離開逗號:$(printf「%11.11s」「$ var1」),感謝您的快速幫助! – Viktor 2015-02-10 15:42:36

+0

啊逗號是我的錯(編碼習慣從C,awk等)。檢查我更新的答案。 – anubhava 2015-02-10 15:44:12

+0

還有一個問題,我需要將這些空格添加爲尾部,而不是開頭,所以上面的結果應該是:「a」,而不是「a」。可以做到嗎? – Viktor 2015-02-10 22:09:19