Просто скопіюйте ці рядки в буфер утримування (потім видаліть їх), а коли в останньому рядку додайте вміст буфера утримування до простору шаблону:
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
З ним gnu sedможна було написати як
some command | sed '1,NUMBER{H;1h;d;};$G'
Ось ще один спосіб з ol ' ed(він rвиводить висновок some commandу текстовий буфер, а потім mвиводить рядки 1,NUMBERпісля останніх $):
ed -s <<IN
r ! some command
1,NUMBERm$
,p
q
IN
Зауважте, що - як вказувалося - вони будуть невдалими, якщо вихід має менше NUMBER+1 рядка. Більш твердим був би підхід ( gnu sedсинтаксис):
some command | sed '1,NUMBER{H;1h;$!d;${g;q;};};$G'
цей лише видаляє рядки в цьому діапазоні, якщо вони не є останнім рядком ( $!d) - інакше він переписує простір шаблону із вмістом буфера утримування ( g), а потім використовує q(після друку поточного простору шаблону).