Eu não tenho um osx awk
para experimentar, mas funciona no meu Linux gnu awk:
awk '
{ n = match($0, /[0-9]+ *$/);
if(n){
word = substr($0, 1, n - 1); num = 0 + substr($0, n);
if(!(word in max) || max[word] < num) max[word] = num
}
}
END{ for(word in max)print word max[word] } '
Em cada linha, procuramos o índice inicial na linha do padrão regexp que é um número com espaço em branco à direita opcional. Nós dividimos a linha nesse índice na parte da palavra e na parte do número. A string numérica é convertida em um número adicionando 0 a ela. Uma matriz associativa indexada pela palavra mantém o maior número.