Uma alternativa awk :
awk 'match($2,/[0-9]+$/) {printf("%s\t%s\t%s\n", $1, substr($2,0,RSTART), substr($2,RSTART,RLENGTH))}' filename
Isso corresponderá apenas à string numérica no final da segunda coluna.
Exemplo: gostaria de dividir $2
no arquivo de entrada, colocando um tab
após o padrão surname
Entrada:
name surname1
name surname30000
name surname456
Saída desejada:
name surname 1
name surname 30000
name surname 456
Você pode pesquisar o primeiro dígito e substituí-lo por uma guia seguida do dígito usando:
sed 's/[0-9]/\t&/' file
sed -e 's/\([0-9]\)/\t/' input.txt
adiciona um separador antes do primeiro dígito em todas as linhas.
Saída:
name surname 1
name surname 30000
name surname 456
Os dados podem estar em uma coluna específica, por exemplo, 16:
sed -e 's/^\(.\{15,15\}\)/ /'
Como alternativa, os dados de interesse no terceiro campo podem não ser numéricos:
sed -e 's/^\([[:alpha:]]\+[[:space:]]\+\)\([[:alpha:]]\+\)/ /'
Qualquer um deles colocará um espaço antes dos dígitos (ou outros caracteres não alfabéticos) nos dados.
Para referência:
Tags text-processing awk split