printfまたはechoを使用して、文字列の前に先行文字を追加します。

printfまたはechoを使用して、文字列の前に先行文字を追加します。

文字列を特定の長さで埋めるために先行文字を追加するには?

文字列が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}

おすすめ記事