CUBE SUGAR CONTAINER

技術系のこと書きます。

シェルスクリプトで数値をゼロパディングする

シェルスクリプトを書いていると、数値をゼロパディングする必要に迫られることがある。 たとえば、ファイル名や日付を処理するときに多い。 結論から先に述べると、数値のゼロパディングは printf(1) を使うことで実現できる。

使った環境は次のとおり。

$ sw_vers
ProductName:    Mac OS X
ProductVersion: 10.15.7
BuildVersion:   19H15

数値をゼロパディングする

たとえば、以下のようにシェル変数を用意する。

$ N=5

このままでは、当然のことながらパディングされていない。

$ echo $N   
5

printf(1) を使って二桁にゼロパディングするには、次のようにする。 なお、使えるフォーマットは man 1 printf を参照のこと。

$ printf "%02d\n" $N
05

シェルスクリプトの中で使う場合には、インラインで実行してやれば良いかな。

$ PADDING_N=$(printf "%02d" $N)
$ echo $PADDING_N         
05

いじょう。