Thanks for the workout

I was getting rusty.
I did it from an input like this:
hjdjnmjd67md8dk349dmcd89f943m39d93m2
8rmdfnmf6e84mdrhf7ri4ner7f894m3nfr78
784jemd7e3i238fnmjie78rnmf7fr83mrmg7
The script looks like this:
function Zeros(str, list) {
while (match(str,/[0-9]+/) != 0) {
list = length(list) < 1 ? substr(str,RSTART,RLENGTH) : list substr(str,RSTART,RLENGTH)
printf "Old string = %s , LIST = %s\n", str, list
str = substr(str,RSTART + RLENGTH,length(str) - RSTART + RLENGTH)
printf "New string = %s\n", str
}
list = addZeros(list)
return list
}
function addZeros(str, i,zlist,len) {
i=0
len = length(str)
while (i++ <= len) {
zlist = length(zlist) < 1 ? str : "0" zlist
}
return zlist
}
{
mylist = Zeros($0)
print mylist
}
Try it, it's a lot of fun.
Hopefully this gives you an idea if you need it
for parsing data containing numbers, etc..
Your initial problem can be handled easily:
function addZeroto(str) {
if (length(str) == 1) {
return "000" str
} else if (length(str) == 2) {
return "00" str
} else if (length(str) == 3) {
return "0" str
} else {
return str
}
}