¿Es posible eliminar la última línea de un archivo mediante un comando?

¿Es posible eliminar la última línea de un archivo mediante un comando?

Accidentalmente distribuí una línea a /etc/crontab en muchos servidores y noté que hay un error tipográfico en esta línea y necesito cambiarla en todos los servidores.

Respuesta1

Otra opción es corregir el error tipográfico en lugar de simplemente eliminar la última línea.

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

Debería poder editar los archivos crontab directamente para versiones más nuevas de cron, ya que verifica los cambios minuciosamente.

Respuesta2

Si su sed admite la edición in situ, entonces,

sed -i '$d' file

de lo contrario, necesitarás usar un comando compuesto como,

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

Respuesta3

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$

Respuesta4

Consulte este artículo del foro en unix.com para obtener la respuesta:

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

sed -e '$d' archivo.entrada > archivo.salida

o

cabeza -$(( wc -l file | awk '{print $1}'- 1)) archivo

información relacionada