Bash
用另一個字元填充字元串中的尾隨空格
我想輸出**
hello world
**超過 20 個字元。printf "%-20s :\n\n" 'hello world!!' # Actual output hello world!! : # Wanted output hello world!!========:
但是,我不想用空格來完成,而是用“ = ”代替。我怎麼做?
filler='====================' string='foo' printf '%s\n' "$string${filler:${#string}}"
給
foo=================
${#string}
是 value 的長度,$string
是${filler:${#string}}
從$filler
offset${#string}
開始的子字元串。輸出的總寬度將是
$filler
或的最大寬度$string
。
jot
在具有 的系統上,可以使用動態創建填充字元串filler=$( jot -s '' -c 16 '=' '=' )
(
=
一行 16 個)。GNU 系統可以使用seq
:filler=$( seq -s '=' 1 16 | tr -dc '=' )
其他系統可能使用 Perl 或其他更快的方法來動態創建字元串。
printf "%.20s:\n\n" "$str========================="
%.20s
字元串截斷格式在哪裡