文字列を特定の長さで埋めるために先行文字を追加するには?
文字列が20文字より短い場合は、文字列の前にゼロを追加したいとします。
printf '%020s\n' "$line"
しかし、これはゼロのような他の何もではなく先行スペースで文字列を埋めます。
文字列は、数字やその他の文字を含む任意の文字列です。
printf '%020i' $number
文字列をorの数字+残りに分割したくありませんprintf '%020d $number'
。
私の現在の出力は次のとおりです
shortstring
私が望む出力は次のとおりです。
000000000shortstring
ベストアンサー1
手動で記入してください。 POSIXツールの使用にこだわったら、これよりも簡単な解決策はないと思います。
while [ ${#line} -lt 20 ]; do
line=0$line
done
または
n=${#line}
while [ $n -lt 20 ]; do
printf '0'
n=$((n-1))
done
printf "$line\n"
もちろん、zshには対応する構文があります。上記のコードスニペットとは異なり、このコードスニペットは、文字列が20文字を超えると文字列を切り捨てます。切り捨てたくない場合は、文字列の末尾を追加できます。
print -r ${(l:20::0:)line}
print -r ${(l:20::0:)line}${line:20}