วิธีใช้ Sed ใน Linux

เซ็ด ย่อมาจากตัวแก้ไขกระแส เป็นโปรแกรมแก้ไขที่ใช้บรรทัดคำสั่งสำหรับ Linux การใช้งาน sed ที่ได้รับความนิยมคือการแก้ไขไฟล์โดยเป็นส่วนหนึ่งของสคริปต์การทำงานอัตโนมัติใน Linux เนื่องจากตัวแก้ไขทั่วไปต้องการอินพุตจากผู้ใช้ที่ใช้งานอยู่ และไม่สามารถแก้ไขไฟล์นอกหน้าจอตัวแก้ไขได้ Sed มักใช้ในการค้นหาและแทนที่จากบรรทัดคำสั่ง

โปรแกรมแก้ไขข้อความประเภทนี้ยังสามารถจัดประเภทเป็นโปรแกรมแก้ไขข้อความที่ไม่ใช่แบบโต้ตอบได้

ให้เราดูตัวเลือกทั่วไปในการแก้ไขไฟล์โดยใช้ Sed เราจะนำไฟล์ต่อไปนี้เป็นตัวอย่าง:

$: cat test.txt สุนัขสีน้ำตาลตัวหนึ่งกระโดดข้ามแมวขี้เกียจ ระบบปฏิบัติการลินุกซ์. ป่าใกล้บ้านฉันมีทั้งแมวและหมาป่า 

ค้นหาและแทนที่

หากต้องการค้นหาสตริงในไฟล์และแทนที่ด้วยสตริงอื่น ให้เรียกใช้:

sed -i "s/cat/fox/g" test.txt

ที่นี่ -ผม flag สั่งให้ sed เขียนการเปลี่ยนแปลงลงในไฟล์ หากไม่มีธงนี้ sed จะแสดงไฟล์ด้วยสตริงที่เปลี่ยนแปลง

ในคำพูดเรามี s/cat/fox/g. ดิ ใช้สำหรับค้นหาและแทนที่คำสั่งของ sed. จากนั้นเราก็มีสตริงที่จะค้นหาซึ่งก็คือ แมว. จากนั้นสตริงที่จะแทนที่ด้วยนั่นคือ จิ้งจอก. ในที่สุด เราก็มีตัวเลือก gซึ่งสั่งสอน sed เพื่อแทนที่เหตุการณ์ทั้งหมดในทุกบรรทัดของไฟล์ ปราศจาก g, sed จะแทนที่เฉพาะการเกิดขึ้นครั้งแรกของ แมว ในทุกบรรทัด

สามารถใช้ Regex ได้ที่นี่

sed -i "s/f[a-z]*\./cat\./g"

แทรก

ในการแทรกข้อความก่อนบรรทัดที่มีสตริงที่ตรงกัน ให้ใช้:

sed -i "/cat/i เริ่ม:" test.txt

ที่นี่, แมว เป็นสตริงที่ค้นหาและ เริ่ม: คือสตริงที่จะป้อนก่อนบรรทัดที่พบสตริงที่ค้นหา

ในทำนองเดียวกัน ในการแทรกข้อความหลังบรรทัด ให้ใช้:

sed -i "/fox/a จบ" test.txt

ลบ

หากต้องการลบบรรทัดที่มีสตริงย่อยให้ใช้:

sed -i "/Linux/d" test.txt

หากต้องการลบบรรทัดที่มีหมายเลขบรรทัดเช่น บรรทัดแรก ใช้:

sed -i '1d' test.txt

ผสมผสานหลายฟังก์ชัน

เพื่อรวมหลายหน้าที่เช่น ค้นหาและแทนที่ ลบ ในคำสั่งเดียว -e สามารถใช้ธงได้

sed -i -e "s/fox/cat/g" -e '2d' test.txt

? ไชโย!