Bash

用另一個字元填充字元串中的尾隨空格

  • September 28, 2020

我想輸出**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}}$filleroffset${#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字元串截斷格式在哪裡

引用自:https://unix.stackexchange.com/questions/398819