É possível excluir a última linha de um arquivo usando um comando?

É possível excluir a última linha de um arquivo usando um comando?

Distribuí acidentalmente uma linha para /etc/crontab em muitos servidores e percebi que há um erro de digitação nesta linha e preciso alterá-la em todos os servidores.

Responder1

Outra opção é corrigir o erro de digitação em vez de apenas excluir a última linha

sed -i '$ s/typotext/correcttext/ /var/spool/cron/user

Você deve ser capaz de editar os arquivos crontab diretamente para versões mais recentes do cron, pois ele verifica as alterações a cada minuto.

Responder2

Se o seu sed suportar edição no local, então,

sed -i '$d' file

caso contrário, você precisará usar um comando composto como,

cat file | sed '$d' > newfile; mv newfile file

Responder3

usarhead

user@host$ cat <<EOF > test.txt
1
2
3
4
EOF
user@host$ head -n -1 test.txt | sponge test.txt
user@host$ cat test.txt
1
2
3
user@host$

Responder4

Veja este artigo do fórum em unix.com para obter a resposta:

http://www.unix.com/shell-programming-scripting/25027-delete-last-line.html

sed -e '$d' arquivo de entrada > arquivo de saída

ou

cabeça -$(( wc -l file | awk '{print $1}'- 1)) arquivo

informação relacionada