ลบบรรทัดออกจากไฟล์โดยใช้ Sed
คำสั่ง Unix นี้ใช้สำหรับ การประมวลผลบรรทัดคำสั่ง ยูทิลิตี้นี้สามารถใช้ในการลบนิพจน์จากไฟล์ซึ่งสามารถระบุได้โดย ตัวคั่นที่ ระบุ (เช่นเครื่องหมายจุลภาคแท็บหรือช่องว่าง) ตามหมายเลขบรรทัดหรือโดยการค้นหาสตริงนิพจน์หรือที่อยู่ของบรรทัดใน ไวยากรณ์ ของ Sed
Sed: ลบหนึ่งบรรทัดขึ้นไปจากไฟล์
นี่คือวิธีลบหนึ่งบรรทัดขึ้นไปจากไฟล์วากยสัมพันธ์
sed '[/] d'sed '{[/] [, ] [/] d'
/.../ = ตัวคั่น
n = หมายเลขบรรทัด
string = สตริงที่พบในบรรทัด
regex = นิพจน์ทั่วไปที่สอดคล้องกับรูปแบบการค้นหา
addr = ที่อยู่ของบรรทัด (หมายเลขหรือรูปแบบ)
d = ลบ
ตัวอย่างของ Sed
นี่คือตัวอย่างของวิธีการใช้ไวยากรณ์ข้างต้นใช้รหัสต่อไปนี้เพื่อลบบรรทัดที่สาม:
sed '3d' fileName.txt
ลบบรรทัดที่มีสตริง "awk" โดยใช้:
sed '/ awk / d' filename.txt
คุณสามารถลบบรรทัดสุดท้ายโดยพิมพ์ใน:
sed '$ d' filename.txt
หรือลบบรรทัดว่างทั้งหมดผ่าน:
sed '/ ^ $ / d' filename.txtsed '/./!d' filename.txt
ลบการจับคู่บรรทัดด้วยนิพจน์ทั่วไป (โดยการลบหนึ่งอักขระที่มีอักขระดิจิทัลอย่างน้อย 1 หลักซึ่งอยู่ที่ท้ายบรรทัด):
sed '/ [0-9 /] [0-9] * $ / d' filename.txt
ลบช่วงเวลาระหว่างบรรทัด 7 และ 9:
sed '7, 9d' filename.txt
การดำเนินการเดียวกันกับด้านบน แต่แทนที่ที่อยู่ด้วยพารามิเตอร์:
sed '/ -Start /, / - สิ้นสุด / d' filename.txt
ตัวอย่างข้างต้นมีการเปลี่ยนแปลงที่หน้าจอแสดงผลของไฟล์ (stdout1 = หน้าจอ)
สำหรับการเปลี่ยนแปลงถาวรในเวอร์ชันเก่า (<4) ให้ใช้ไฟล์ชั่วคราวสำหรับ GNU sed โดยใช้ "-i [suffix]" :
sed -i ".bak" '3d' filename.txt