Copie essas linhas para o buffer de retenção (depois, exclua-as) e, quando estiver na última linha, anexe o conteúdo do buffer de retenção ao espaço padrão:
some command | sed '1,NUMBER{ # in this range
H # append line to hold space and
1h # overwrite if it's the 1st line
d # then delete the line
}
$G' # on last line append hold buffer content
Com gnu sed você pode escrever como
some command | sed '1,NUMBER{H;1h;d;};$G'
Aqui está outra maneira com ol ' ed (ele r ead a saída de some command no buffer de texto e, em seguida, m oves linhas 1,NUMBER após o la $ t one):
ed -s <<IN
r ! some command
1,NUMBERm$
,p
q
IN
Observe que, como foi apontado, ambos falharão se a saída tiver menos de NUMBER + 1 linhas. Uma abordagem mais sólida seria ( gnu sed syntax):
some command | sed '1,NUMBER{H;1h;$!d;${g;q;};};$G'
este só apaga linhas nesse intervalo, desde que não seja a última linha ( $!d ) - senão substitui o espaço padrão com o conteúdo do buffer de retenção ( g ) e depois q uits (após a impressão o espaço padrão atual).