Aqui está uma maneira simples de excluir a última linha, que funciona no BSD, etc.
sed '$d' input.txt
A expressão lê "na última linha, apague-a". As outras linhas serão impressas, pois é o comportamento padrão de sed
.
Você poderia encadear juntos para remover várias linhas
sed '$d' input.txt | sed '$d' | sed '$d'
O que é um pouco pesado, reconhecidamente, mas faz apenas uma varredura através do arquivo.
Você também pode dar uma olhada nisto, para obter mais respostas: link
Aqui está um verso adaptado de um dos meus favoritos:
N=10
sed -n -e ':a' -e "1,$N!{P;N;D;};N;ba"
Eu me diverti decifrando aquele, e espero que você também o faça (:
Ele armazena em buffer N
linhas à medida que varre, mas por outro lado é bastante eficiente.