$ sed -r 's/([0-9])([^0-9])/\n/g' filename
103
Ru
103
mRh
104
1041
O regex acima procura um número seguido por não um número. Se encontrado, insere uma nova linha entre eles.
Mais detalhadamente, os comandos sed do formulário s/old/new/
procuram old
e substituem por new
. No nosso caso, old
consiste em dois caracteres: ([0-9])
corresponde a qualquer número e, por estar entre parênteses, salva o valor. ([^0-9])
corresponde a qualquer coisa que não seja um número e salva também. Esses dois caracteres, se encontrados, são substituídos por \n
, o que significa a primeira correspondência (o número), uma nova linha e a segunda correspondência (não-um-número).
MORE: Se quisermos quebrar o começo dos números e ao final, adicionamos mais um comando de substituição:
$ echo xyz541wpk | sed -r 's/([0-9])([^0-9])/\n/g; s/([^0-9])([0-9])/\n/g'
xyz
541
wpk
O segundo comando de substituição é como o primeiro, mas procura pelo padrão reverso: não-um-número seguido por um número.