bash で整数のシーケンスをゼロ埋めしてすべて同じ幅にするにはどうすればよいでしょうか? 質問する

bash で整数のシーケンスをゼロ埋めしてすべて同じ幅にするにはどうすればよいでしょうか? 質問する

いくつかの値をループする必要があります。

for i in $(seq $first $last)
do
    does something here
done

および については$first$last固定長 5 にする必要があります。したがって、入力が の場合1、 となるように先頭にゼロを追加する必要があります00001。たとえば までループします99999が、長さは 5 でなければなりません。

例: 00002、、、00042など0021212312

どうすればそれができるのか、何かアイデアはありますか?

ベストアンサー1

-fただし、特定のケースでは、リストを出力するときに数値をフォーマットするためのフラグを使用するのが最も簡単でしょうseq。例:

for i in $(seq -f "%05g" 10 15)
do
  echo $i
done

次の出力が生成されます。

00010
00011
00012
00013
00014
00015

より一般的には、bashprintf組み込まれているため、次のように出力にゼロを埋め込むことができます。

$ i=99
$ printf "%05d\n" $i
00099

-vフラグを使用して出力を別の変数に保存できます。

$ i=99
$ printf -v j "%05d" $i
$ echo $j
00099

printfはと若干異なる形式をサポートしているため、の代わりにseqを使用する必要があることに注意してください。%05d%05g

おすすめ記事