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}'