Las variantes de esta pregunta ciertamente se han hecho varias veces en diferentes lugares, pero estoy tratando de eliminar las últimas Mlíneas de un archivo sin suerte.
La segunda respuesta más votada en esta pregunta recomienda hacer lo siguiente para eliminar la última línea de un archivo:
head -n -1 foo.txt > temp.txt
Sin embargo, cuando intento eso en OSX y Zsh, obtengo:
head: illegal line count -- -1
¿Porqué es eso? ¿Cómo puedo eliminar las M últimas líneas y las primeras N líneas de un archivo dado?

head --version? ¿Qué sistema estás usando?head --versiondevuelve un error en realidad.Respuestas:
Puede eliminar las primeras 12 líneas con:
(Eso significa imprimir desde la línea 13).
Algunas implementaciones de soporte
headsimilar a GNUhead:Pero eso no es estándar.
funcionaría en aquellos sistemas que tienen
tail -r(ver también GNUtac) pero son subóptimos.Donde
nes 1:También puedes hacer:
eliminar 2 líneas, pero eso no es óptimo.
Tu puedes hacer:
Pero tenga en cuenta que no funcionará con grandes valores de n con algunas
sedimplementaciones.Con
awk:Para eliminar
mlíneas del principio yndel final:fuente
sed 'x;1d;$d'también podría usarse para obtener las dos últimas líneas. Y con un par deN's después1dpodría usarse para obtener un poco más que eso, aunque en ese momento no ofrece ninguna ventaja sobre elN;P;Dciclo que ya recomienda.monson0. De lo contrario, sería perfecto.Puede usar la siguiente forma para eliminar las primeras N líneas y las últimas M líneas.
Con
N=5,M=7y el archivotest.txt:El comando imprime todas las líneas desde N + 1 hasta LastLine-M.
Otra opción es usar python:
fuente
Puede eliminar las últimas
Mlíneas (aquí M = 100) de un archivo con:fuente