最後のゼロを変更せずに先行ゼロを埋めるにはどうすればよいですか?

最後のゼロを変更せずに先行ゼロを埋めるにはどうすればよいですか?

入力する:

x3blah0blah4blahblah48blah0

予想出力:

x003blah000blah004blahblah048blah0

すべての数字を3桁(最後の0桁を除く)で埋めたいです。これまで私は以下を持っています:

sed 's/\([0-9]\)/00\1/g'

ただし、数字が2つの場合は4で埋められます。また、最後のゼロを除外する方法もわかりません。

答え1

perl -pe 's/\d++(?!$)/sprintf"%03d",$&/ge'

行の末尾に見つからない一連の10進数は、3つの長さまでゼロで埋められます。

文字列がシェル変数にあり、シェルがzshの場合:

set -o extendedglob
new_string=${string//(#m)<->[^0-9]/${(l[4][0])MATCH}}

長さが3になるように、ゼロを含む数字ではなく数字が続く一連の数字を埋め、切り取ります。

関連情報