Você pode remover as primeiras 12 linhas com:
tail -n +13
(Isso significa imprimir a partir da linha 13).
Algumas implementações de head como o GNU head support:
head -n -12
mas isso não é padrão.
tail -r file | tail -n +12 | tail -r
funcionaria nos sistemas que possuem tail -r (veja também GNU tac ), mas é sub-ótimo.
Onde n é 1:
sed '$d' file
Você também pode fazer:
sed '$d' file | sed '$d'
para remover 2 linhas, mas isso não é o ideal.
Você pode fazer:
sed -ne :1 -e 'N;1,12b1' -e 'P;D'
Mas cuidado, pois isso não funcionará com grandes valores de n com algumas sed implementações.
com awk :
awk -v n=12 'NR>n{print line[NR%n]};{line[NR%n]=$0}'
Para remover m linhas do início e n do final:
awk -v m=6 -v n=12 'NR<=m{next};NR>n+m{print line[NR%n]};{line[NR%n]=$0}'