Ancore a expressão até o final da linha:
grep -E "\-?[[:digit:]]{1,3}\.[[:digit:]]{0,5}$"
Se você adicionar a opção PCRE de -o
para retornar apenas o grupo capturado, verá que seu exemplo corresponde e retorna a correspondência desejada:
grep -oE "(\-?[[:digit:]]{1,3}\.[[:digit:]]{0,5}$)"
-146.17516
Além disso, para capturar correspondências de linhas em um arquivo com espaço em branco opcional, basta adicionar \s*
as:
grep -oE "(\-?[[:digit:]]{1,3}\.[[:digit:]]{0,5}\s*$)"