입력하다:
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이 포함된 숫자가 아닌 숫자가 이어지는 일련의 숫자를 채우고 자릅니다.