入力する:
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になるように、ゼロを含む数字ではなく数字が続く一連の数字を埋め、切り取ります。