Primeiro de tudo você tem que usar o comando sort antes de usar uniq -c porque este comando falha se você tiver outros caracteres repetidos depois de outros caracteres como entrada:
a
A
b
c
A
a
a
E o segundo problema é que você obtém resultado errado porque converte todas as letras maiúsculas em minúsculas, porque você obtém resultados em letras minúsculas.
Além disso, você não precisa de 's/ *$//' parte do sed porque sua saída não possui espaços no final das linhas.
Você deve tentar com seu comando modificado como este:
tr a-z A-Z <file |sort | uniq -c | sed 's/^ *//'
Ou tente ainda mais curto:
sort -r file |uniq -ci
sort com sua opção -r classifica caracteres maiúsculos como primeiras linhas. e com uniq e sua opção -i ignora diferenças no caso.