สิ่งนี้จะกลับรายการไฟล์ทีละบรรทัด
sed '1! G; h; $! d' ไฟล์
ครั้งแรกที่sedมีพื้นที่ถือและพื้นที่รูปแบบ เราต้องแยกแยะความแตกต่างระหว่างพวกเขาก่อนที่จะมุ่งเน้นไปที่คำสั่งเฉพาะนั้น
เมื่อsedอ่านบรรทัดใหม่มันจะถูกโหลดในพื้นที่รูปแบบ ดังนั้นพื้นที่นั้นจะถูกเขียนทับทุกครั้งที่มีการประมวลผลบรรทัดใหม่ ในทางตรงกันข้ามพื้นที่พักมีความสอดคล้องมากกว่าการประมวลผลทั้งหมดและค่าที่สามารถเก็บไว้ที่นั่นสำหรับการใช้งานในภายหลัง
ไปที่คำสั่ง:
มี 3 คำสั่งในการแถลงครั้งนี้มี1!G, hและ$!d
1!Gหมายถึงว่าGคำสั่งจะถูกดำเนินการในบรรทัดยกเว้นคนแรกที่ทุกคน (คน!ขัดแย้ง1) Gหมายถึงการผนวกสิ่งที่อยู่ในพื้นที่พักไว้ในพื้นที่รูปแบบ
hใช้กับทุกบรรทัด มันจะคัดลอกพื้นที่รูปแบบไปยังพื้นที่พัก (และเขียนทับมัน)
$!dใช้กับทุกบรรทัดยกเว้นบรรทัดสุดท้าย ( $แทนบรรทัดสุดท้าย, !คัดค้าน) dเป็นคำสั่งเพื่อลบบรรทัด (พื้นที่รูปแบบ)
- ตอนนี้เมื่ออ่านบรรทัดแรกแล้วให้
sedเรียกใช้งานhคำสั่ง บรรทัดแรกจะถูกคัดลอกไปยังพื้นที่พัก จากนั้นจะถูกลบเนื่องจากตรงกับ$!เงื่อนไข sedดำเนินการต่อด้วยบรรทัดที่สอง
- บรรทัดที่สองตรงกับเงื่อนไข
1!(ไม่ใช่บรรทัดแรก) ดังนั้นพื้นที่พัก (ซึ่งมีบรรทัดแรก) จะถูกผนวกเข้ากับพื้นที่รูปแบบ (ซึ่งมีบรรทัดที่สอง) หลังจากนั้นในพื้นที่รูปแบบขณะนี้มีบรรทัดที่สองตามด้วยบรรทัดแรกคั่นด้วยบรรทัดใหม่ ตอนนี้hคำสั่งใช้ (เหมือนในทุกบรรทัด); ทั้งหมดที่อยู่ในพื้นที่รูปแบบจะถูกคัดลอกไปยังพื้นที่พัก คำสั่งที่สาม ( $!d) ใช้: บรรทัดจะถูกลบออกจากพื้นที่รูปแบบ
- ขั้นตอนที่ 2 เสร็จแล้วกับทุกบรรทัด เราข้ามไปที่บรรทัดสุดท้าย
- ในบรรทัดสุดท้าย (
$) เกือบทั้งหมดของขั้นตอนที่ 2 เสร็จสิ้น แต่ไม่ใช่ส่วนลบ ( d) sedเมื่อเรียกใช้โดยไม่-nพิมพ์พื้นที่รูปแบบโดยอัตโนมัติเมื่อสิ้นสุดการประมวลผลสำหรับแต่ละบรรทัดอินพุต ดังนั้นเมื่อไม่ถูกลบพื้นที่รูปแบบจะถูกพิมพ์ ตอนนี้มันมีทุกบรรทัดในการสั่งซื้อที่ตรงกันข้าม