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.