โปรแกรมแก้ไขสตรีม (SED): พื้นฐาน

Porkaerm Kae Khi Stri M Sed Phun Than



SED หรือที่รู้จักในชื่อโปรแกรมแก้ไขสตรีมเป็นเครื่องมือที่มีประโยชน์มาก ใช้เพื่อค้นหาคำหรือรูปแบบเฉพาะ และต่อมาทำบางสิ่งกับคำหรือรูปแบบ หรืออีกนัยหนึ่งคือแปลงคำหรือรูปแบบนั้น ใน Windows SED เรียกอีกอย่างว่าฟังก์ชัน 'ค้นหา' และ 'แทนที่' SED มาพร้อมกับ Ubuntu ดังนั้นจึงไม่จำเป็นต้องติดตั้งอะไรเลย เพียงแค่เริ่มใช้มัน ในบทช่วยสอนนี้ เราจะอธิบายวิธีใช้ SED หรือโปรแกรมแก้ไขสตรีม

คำสั่ง 'S'

คำสั่งที่สำคัญที่สุดใน SED หรือโปรแกรมแก้ไขสตรีมคือคำสั่ง “s” “s” ย่อมาจากการทดแทน ไวยากรณ์มีดังนี้:







/ regexp / ทดแทน / ธง


ลองใช้ไฟล์ชื่อ 'file.txt' สำหรับตัวอย่าง นี่คือลักษณะของ 'file.txt' หากคุณสนใจ:




ลองใช้ตัวอย่างเพื่อแสดงวิธีการทำงานของคำสั่ง “s”:



แต่ / อันดับแรก / ดวงจันทร์ / ฉัน file.txt > moon.txt


เมื่อให้ถ้อยคำเช่นนั้นก็หมายความว่า:





    • s – ย่อมาจากตัวสำรอง
    • อันดับแรก – คำที่จะค้นหาในไฟล์ชื่อ “file.txt”
    • ดวงจันทร์ - คำว่า 'แรก' ถูกแทนที่ด้วยคำว่า 'ดวงจันทร์'
    • ฉัน - มันย่อมาจากการเพิกเฉย เราจะเพิกเฉยต่อส่วนนี้ในช่วงแรก
    • file.txt - ไฟล์ที่ SED จะค้นหารูปแบบหรือคำ ในกรณีนี้คำว่า 'ครั้งแรก' จะเป็น:
    • ค้นหาใน file.txt

    • moon.txt – เมื่อคำว่า “ครั้งแรก” ถูกแทนที่ด้วยคำว่า “ดวงจันทร์” คำนั้นจะถูกบันทึกไว้ใน “moon.txt”

เกิดอะไรขึ้นที่นี่? SED แทนที่คำว่า 'ครั้งแรก' สำหรับ 'ดวงจันทร์' เฉพาะในกรณีแรกเท่านั้น (ซึ่งหมายความว่าหากคำว่า 'ครั้งแรก' เกิดขึ้นหลายครั้ง มันจะไม่แทนที่ทั้งหมดหรือแทนที่หลายครั้ง) ไฟล์ที่ค้นหาเรียกว่า “file.txt” และเมื่อทำการแปลงหรือแทนที่แล้ว ไฟล์นั้นจะถูกบันทึกไว้ใน “moon.txt”



นี่คือสิ่งที่ดูเหมือน:


โปรดอย่าลืมใส่ “/” ในตำแหน่งที่ต้องการ หากคุณละเว้น '/' SED จะไม่ยอมรับคำสั่ง

จนถึงตอนนี้เราแทนที่คำว่า 'ครั้งแรก' ด้วย 'เผชิญหน้า' เท่านั้นด้วยการแทนที่ ตอนนี้ สมมติว่าเราต้องการแทนที่คำว่า 'เส้น' (ซึ่งเกิดขึ้นหลายครั้ง - สี่ครั้งโดยเฉพาะ) ในบรรทัดที่สามด้วยคำว่า 'นางฟ้า'

เราจะกำหนดเป้าหมายบรรทัดที่สามนั้นโดยเฉพาะอย่างไร เราใช้คำสั่งต่อไปนี้:

แต่ '3s / เส้น / นางฟ้า / ฉัน file.txt > angel.txt


แล้วเกิดอะไรขึ้นที่นี่? “3” ระบุหมายเลขบรรทัด ดังนั้นจึงไปที่บรรทัดที่สาม จากนั้นแทนที่คำว่า 'line' สำหรับ 'angel' ในไฟล์ชื่อ 'file.txt' และบันทึกไฟล์ที่แปลงแล้วเป็น 'angel.txt'


จะทำอย่างไรถ้าเราต้องการแทนที่หรือแปลงบรรทัด '3' และ '4'?

แต่ ' 3 ,4วิ / เส้น / นางฟ้า / ฉัน file.txt > angel2.txt



โปรดทราบว่าในตัวอย่างก่อนหน้านี้ เราใช้แฟล็ก “i” เพื่อละเว้น ตอนนี้เราใช้แฟล็ก 'g' สำหรับทั่วโลก

ลองใช้ตัวอย่างเพื่อแสดงวิธีการทำงานของคำสั่ง “s”:

แต่ / เส้น / ดวงอาทิตย์ / g' file.txt > sun.txt


เมื่อให้ถ้อยคำเช่นนั้นก็หมายความว่า:

“g” ย่อมาจาก global โปรดจำไว้ว่าในตัวอย่างแรก เมื่อเราใช้แฟล็ก “i” จะมีเพียงการแทนที่เพียงครั้งเดียว ตอนนี้เราได้เพิ่ม 'g' สำหรับ global แล้ว มันหมายถึงการทดแทนทุกที่ ดังนั้น แทนที่จะพูดว่าบรรทัดแรก บรรทัดที่สอง บรรทัดที่สาม และบรรทัดสุดท้าย กลับบอกว่าพระอาทิตย์แรก พระอาทิตย์ที่สอง พระอาทิตย์ที่สาม และอาทิตย์สุดท้าย โดยจะแทนที่บรรทัดคำในไฟล์ทั้งหมด (ทุกที่) ด้วยคำว่า 'ดวงอาทิตย์'


ทีนี้ ถ้าเราต้องการเลือกบรรทัดเดียวตามคำที่มีอยู่ล่ะ เราจะเห็นได้ว่าบรรทัดสุดท้ายของ 'file.txt' มีคำว่า 'last' อยู่ในนั้น ตอนนี้ สมมติว่าเราต้องการ 'นี่คือบรรทัดสุดท้าย นี่คือประโยคสุดท้าย” ประโยคที่กลายเป็น “นี่คือผีตัวสุดท้าย นี่คือประโยคสุดท้าย”

เราเขียนสิ่งต่อไปนี้:

แต่ ' / ล่าสุด / / เส้น / ผี / ’ ไฟล์.txt > ghost.txt


'สุดท้าย' ในที่นี้จะบอก SED ให้มองหาบรรทัดที่มีคำว่า 'สุดท้าย' จากนั้นแทนที่คำว่า 'บรรทัด' ด้วย 'ghost' ภายในบรรทัดนั้น


ตอนนี้ สมมติว่าเราต้องการทำสิ่งที่ตรงกันข้าม สมมติว่าเราต้องการให้ทุกบรรทัดที่ไม่มีคำว่า 'สุดท้าย' มีคำว่า 'บรรทัด' เปลี่ยนเป็น 'ผี' มาเขียนสิ่งต่อไปนี้:

แต่ ' / ล่าสุด /! / เส้น / ผี / ’ ไฟล์.txt > ghost2.txt


ดังที่คุณเห็นที่นี่ ทุกบรรทัดยกเว้นบรรทัดสุดท้าย (ซึ่งมีคำว่า 'สุดท้าย') มีคำว่า 'บรรทัด' แทนที่ด้วยคำว่า 'ผี'


เรายังสามารถทำได้โดยใช้หมายเลขบรรทัด:

แต่ ' 3 , 4 ! / เส้น / กลางคืน / ฉัน file.txt > night.txt


ในกรณีนี้ บรรทัดที่ 3 และ 4 จะถูกละเว้น แต่ทุกบรรทัดจะมีคำว่า 'เส้น' แทนที่ด้วยคำว่า 'กลางคืน'

คำสั่งหลายคำสั่ง

ทีนี้ถ้าคุณมีหลายคำสั่งล่ะ? คุณอยากจะทำทีละครั้งหรือทั้งหมดในคราวเดียวเพื่อประหยัดเวลาและทำงานแทน เพราะเหตุใด

จะเป็นอย่างไรหากเราต้องการเปลี่ยนคำว่า “ครั้งแรก” เป็น “วัน” “ที่สอง” เป็น “กลางคืน” และ “ที่เหลือ” เป็น “ผี”? เราใช้เครื่องหมายอัฒภาคเพื่อทำสิ่งนี้ อย่าลืมใส่เซมิโคลอนต่อท้ายด้วยล่ะ!

โปรดทราบว่าคุณไม่จำเป็นต้องใส่แฟล็ก 'i' หรือแฟล็ก 'ignore' อย่างแน่นอน แต่คุณต้องใส่เครื่องหมายทับ (/) หลังวลีการแปลงอย่างแน่นอน

ตอนนี้เรามาดูตัวอย่างกัน:

แต่ / อันดับแรก / วัน / ; ส / ที่สอง / กลางคืน / ; ส / ที่สาม / ผี / ; ส / ล่าสุด / ผี / ;’ ไฟล์.txt > ชุดค่าผสม.txt


บทสรุป

โปรแกรมแก้ไขสตรีมหรือ SED เป็นวิธีหนึ่งในการเลือกคำหรือรูปแบบและเปลี่ยนแปลง จริงๆ แล้วมันเป็นบรรทัดคำสั่งที่เทียบเท่ากับฟังก์ชัน 'ค้นหา' และ 'แทนที่' ของ Window คำสั่ง SED อาจซับซ้อนมาก แต่อย่างน้อยถ้าคุณรู้พื้นฐาน คุณก็พร้อมที่จะดำเนินการต่อ! SED เป็นเครื่องมือที่ทรงพลังมากจริงๆ พร้อมด้วยฟังก์ชันมากมาย แม้ว่าเราจะไม่สามารถครอบคลุมทั้งหมดได้ในบทช่วยสอนเดียว แต่เราครอบคลุมพื้นฐานของ SED โดยพื้นฐานแล้ว เราได้เรียนรู้วิธีการแปลงคำเฉพาะโดยใช้คำสั่ง “s” โดยที่ “s” ย่อมาจากคำทดแทน เราสามารถแทนที่คำด้วยคำอื่น เลือกบรรทัดที่จะเกิดการแทนที่ หรือแม้แต่ปฏิเสธก็ได้ ไม่ว่าจะด้วยวิธีใด นี่เป็นส่วนที่ง่ายที่สุดเกี่ยวกับ SED

ขอให้มีความสุขในการเขียนโค้ด!