テキストファイル内の数値を0埋め(ゼロパディング)して任意の桁数に揃えたいことがあったので、やり方を書いておきます。
まずは、テキストエディタで正規表現を使って置換を行う方法。
その後に、コマンド(sed)を使った方法も載せておきます。
そして、応用編として時間表記の0埋めも考えてみました。
1.テキストエディタで0埋めしてみる
123
0045
10
などを前ゼロ埋め5桁に変換したい場合のやり方。
2段階に分けて置換を行います。
(1)数字の前に0を入れて桁を増やす
テキストエディタの置換機能を使って数字の前に揃えたい桁数以上の0を挿入します。
置換前 ([0-9]+)
置換後 00000$1
↓
00000123
000000045
0000010
()はグループを表します。複数使用した場合は先頭から順に、$1$2$3...で利用できます。
秀丸では¥1¥2¥3...と¥文字を使います。
各エディタとも「正規表現」をオンにするのを忘れずに。
(2)必要な桁数以上を削除する
揃えたい桁数だけを残します。
置換前 (0*)([0-9]{5}) ・・5桁残したい場合は{5}とします。
置換後 $2
↓
00123
00045
00010
2.sedコマンドで0埋めしてみる
sedコマンドを使えば、もっと楽に一気に変換出来ます。
cat test.txt | sed -E "s/([0-9]+)/00000\1/g" | sed -E "s/(0*)([0-9]{5})/\2/g"
↓
00123
00045
00010
\はエスケープ文字です。バックスラッシュか¥マークを使います。
3.時刻表示への応用
応用として時刻の0埋めも可能です。
1:14
17:13
9:03
時刻に前ゼロをつけて桁を合わせたい場合のやり方。
2段階に分けて置換を行います。
(1)置換で時刻の先頭に0を入れます。
置換前 ([0-9]+):([0-9][0-9])
置換後 0$1:$2
↓
01:14
017:13
09:03
(2)「:」の左2文字だけを残します。
置換前 (0*)([0-9][0-9]):([0-9][0-9])
置換後 $2:$3
↓
01:14
17:13
09:03
以上です。