ลบบรรทัดออกจากไฟล์โดยใช้ Sed

ยูทิลิตี้ Unix 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.txt

sed '/./!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 
บทความก่อนหน้านี้ บทความถัดไป

เคล็ดลับยอดนิยม