Imprime caracteres por trás dos dígitos

2

function / script, que para argumento em formato (alfas e dígitos) afa5hgt3tt , errerew9ax66w , imprime caracteres atrás dos dígitos muitas vezes como valor de dígito, por exemplo

hgthgthgthgthgttttttt

axaxaxaxaxaxaxaxaxaxaxwwwwwww... 

Meu script:

#!/bin/bash
func () {
  repeats=$(echo  | sed -e 's/\([A-Za-z]*\)\([0-9]*\)\([A-Za-z]*\)\([0-9]*\)\([A-Za-z]*\)//g')
  for (( i = 0; i < $repeats; i++ )); do
    echo  | sed -e 's/\([A-Za-z]*\)\([0-9]*\)\([A-Za-z]*\)\([0-9]*\)\([A-Za-z]*\)//g' | tr -d "\n"
  done
  echo -e "\n"
}
func afa5hgt3tt
func errerew9ax66w

Minha função não consegue imprimir os últimos caracteres atrás do dígito. isto é o ttttt e o wwww.

    
por Martin Yeboah 24.06.2015 / 19:45

1 resposta

3

Usando perl (Thx @terdon )

perl -pe 's/(.)(\d+)+/ x /eg'

Ou como função

func () {
  perl -pe 's/(.)(\d+)+/ x /eg' <<< ""
}

Exemplo

% perl -pe 's/(.)(\d+)+/ x /eg' <<< "afa5hgt66tt"
afaaaaahgtttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttt

% perl -pe 's/(.)(\d+)+/ x /eg' <<< "errerew9ax66w"
errerewwwwwwwwwaxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxw

% perl -pe 's/(.)(\d+)+/ x /eg' <<< "afa5hgt3tt"   
afaaaaahgttttt
    
por A.B. 24.06.2015 / 20:32