เพียงแค่คัดลอกบรรทัดเหล่านั้นไปยังบัฟเฟอร์พัก (จากนั้นลบออก) และเมื่อในบรรทัดสุดท้ายผนวกเนื้อหาของบัฟเฟอร์ค้างไว้กับพื้นที่รูปแบบ:
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
oves บรรทัด1,NUMBER
หลังจาก la $
t one):
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
uits (หลังจากพิมพ์พื้นที่รูปแบบปัจจุบัน)