Bu satırları bekletme arabelleğine kopyalayın (sonra silin) ve son satırda bekletme arabelleğinin içeriğini desen alanına ekleyin:
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
Onunla gnu sed
şöyle yazabilirsin
some command | sed '1,NUMBER{H;1h;d;};$G'
İşte ol 'ile başka bir yol var ed
( r
çıktısını some command
metin arabelleğine yönlendirir ve sonra m
satırdan 1,NUMBER
sonra satırları uzatır $
):
ed -s <<IN
r ! some command
1,NUMBERm$
,p
q
IN
Belirtildiği gibi, bunların her ikisinde de çıktı NUMBER
+1 çizgisinden daha az olursa başarısız olur . Daha sağlam bir yaklaşım ( gnu sed
sözdizimi) olacaktır:
some command | sed '1,NUMBER{H;1h;$!d;${g;q;};};$G'
bu, yalnızca son satır ( $!d
) olmadığı sürece bu aralıktaki satırları siler - aksi takdirde tutma arabellek içeriğiyle ( g
) ve ardından q
uits (geçerli kalıp alanını yazdırdıktan sonra) ile desen alanının üzerine yazar .