Copiez simplement ces lignes dans le tampon de maintien (puis supprimez-les) et lorsque sur la dernière ligne, ajoutez le contenu du tampon de maintien à l'espace de motif:
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
Avec gnu sedvous pourriez l'écrire comme
some command | sed '1,NUMBER{H;1h;d;};$G'
Voici une autre façon avec ol ' ed(il rlit la sortie de some commanddans le tampon de texte puis movule les lignes 1,NUMBERaprès la dernière $):
ed -s <<IN
r ! some command
1,NUMBERm$
,p
q
IN
Notez que - comme indiqué - ces deux échoueront si la sortie a moins de NUMBER+1 lignes. Une approche plus solide serait ( gnu sedsyntaxe):
some command | sed '1,NUMBER{H;1h;$!d;${g;q;};};$G'
celui-ci ne supprime que les lignes de cette plage tant qu'elles ne sont pas la dernière ligne ( $!d) - sinon, il écrase l'espace de motif avec le contenu du tampon de maintien ( g), puis se qferme (après avoir imprimé l'espace de motif actuel).