私の現在のコードは次のようになります:x=${y:0:40}文字列の長さを40文字に制限します。文字列が40文字より短い場合、末尾の場所をスペースで埋めることは可能ですか?
だから私の場合 y="very short text"
私のyになりたい:
y = "非常に短いテキスト(+25末尾のスペース) "
私の現在のコードは次のようになります:x=${y:0:40}文字列の長さを40文字に制限します。文字列が40文字より短い場合、末尾の場所をスペースで埋めることは可能ですか?
だから私の場合 y="very short text"
私のyになりたい:
y = "非常に短いテキスト(+25末尾のスペース) "
回答:
それらの文字がすべてシングルバイトである場合、つまり、文字セットがシングルバイトのロケール(iso8859-1など)である場合、またはロケールの文字セットがUTF-8であるがテキストはASCIIのみである場合、 :
printf -v y %-40.40s "$y"
それは切り捨てとパディングの両方をカバーします。
そうでない場合は、いつでも40個のスペースを追加して${y:0:40}アプローチを使用できます。
printf -v pad %40s
y=$y$pad
y=${y:0:40}
zsh 左右のパディング専用の演算子があります:
y=${(r:40:)y}
(切り捨ても行います)。文字数カウントの代わりのバイトなので、持っていない上記の問題。ただし、オプションには5.3以降が必要です。zshprintfbashzsh-v
あなたが試してみてくださいprintf:
printf '%-40s' "$y"