Provavelmente não há linha vazia no final.
Os arquivos de texto Unix consistem em linhas, cada uma delas termina em um caractere de alimentação de linha ( '\n' , ^J , 0x0a ). Ou seja, o caractere de alimentação de linha não é um separador de linha, mas um caractere de término de linha. Isso também é verdade para a última linha e, portanto, para o arquivo como um todo.
Por exemplo, um arquivo de texto contendo
abc
def
ficará assim quando visualizado com xxd :
0000000: 6162 630a 6465 660a abc.def.
Você pode ver claramente o único 0a no final. Por outro lado, se houver mais uma linha vazia no final, você obtém
0000000: 6162 630a 6465 660a 0a abc.def..
Note que agora existem dois 0a bytes.
Você também pode ver isso com wc -l , que conta as linhas. No primeiro arquivo, ele dará 2 , no segundo arquivo, ele dará 3 . Observe também que, se o feed de linha final estiver ausente (o que significa que o arquivo não é realmente um arquivo de texto válido, embora a maioria das ferramentas possa tratá-lo de qualquer maneira), wc contará apenas uma linha.