Supondo que você sempre tenha algumas regras razoáveis de boa formação (sempre um não-dígito na versão, a versão sempre termina em dígitos), isso, no entanto, klunky, pode ser um começo:
#!/usr/bin/gawk -f
1 {
pfx = gensub(/^(.*[^0-9])([0-9]+)$/, "\1", "")
patchlevel = gensub(/^(.*[^0-9])([0-9]+)$/, "\2", "")
new_pl = (1*patchlevel)+1
printf "%s%s\n", pfx, new_pl
}
Teste:
[0 1066] ~/temp % echo "12.4alpha9" | gawk -f incvers.awk
12.4alpha10
[0 1067] ~/temp % echo "12.4alpha12" | gawk -f incvers.awk
12.4alpha13
[0 1068] ~/temp % echo "12.4alpha-2" | gawk -f incvers.awk
12.4alpha-3