/ / Eliminar de forma permanente las últimas líneas numéricas específicas de un archivo - bash, sed

Eliminar permanentemente un último número específico de líneas de un archivo - bash, sed

Usé el siguiente comando en el bash para eliminar las dos últimas líneas de bash.bashrc (agregué algunas líneas malas): sed "69,70d" /etc/bash.bashrc

Pero no borra las líneas permanentemente como quisiera.

Respuestas

0 para la respuesta № 1

Una solución es usar head -n -<n> en combinación de tee.

A pesar de que head no soporta en lugar de edición que es compatible en sed -i , usted puede lograr en lugar de edición usando tee mando.

Ver: El comando sed buscar y reemplazar en archivo y sobrescribir archivo no funciona, vacía el archivo

head -n -2 /etc/bash.bashrc | sudo tee /etc/bash.bashrc >/dev/null

0 para la respuesta № 2

Esto debería funcionar para eliminar las dos últimas líneas:

sed -n -e :a -e "1,2!{P;N;D;};N;ba" /etc/bash.bashrc

Y luego si lo entiendes | cat > /etc/bash.bashrc sobrescribirá el archivo con el nuevo contenido acortado:

sed -n -e :a -e "1,2!{P;N;D;};N;ba" /etc/bash.bashrc | cat > /etc/bash.bashrc