마지막 0을 변경하지 않고 선행 0을 어떻게 채울 수 있나요?

마지막 0을 변경하지 않고 선행 0을 어떻게 채울 수 있나요?

입력하다:

x3blah0blah4blahblah48blah0

예상 출력:

x003blah000blah004blahblah048blah0

모든 숫자를 3자리(마지막 0자리 제외)로 채우고 싶습니다. 지금까지 나는 다음을 가지고 있습니다 :

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

단, 숫자가 2개인 경우에는 4로 채워집니다. 또한 마지막 0을 제외하는 방법도 모르겠습니다.

답변1

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

줄 끝에서 찾을 수 없는 일련의 10진수는 3 길이까지 0으로 채워집니다.

문자열이 쉘 변수에 있고 쉘이 zsh인 경우:

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

길이가 3이 되도록 0이 포함된 숫자가 아닌 숫자가 이어지는 일련의 숫자를 채우고 자릅니다.

관련 정보