การแก้ไขไฟล์ข้อความบน Linux ด้วยมืออาจเป็นเรื่องน่าเบื่อ จึงเป็นเรื่องดีที่จะทราบวิธีการแทนที่สตริงข้อความในไฟล์โดยใช้บรรทัดคำสั่งอย่างรวดเร็ว หากคุณเพิ่งเริ่มใช้ Linux และไม่รู้ว่าต้องทำอย่างไร เราช่วยคุณได้! ปฏิบัติตามในขณะที่เราแสดงวิธีแทนที่สตริงข้อความในไฟล์บน Linux!
แทนที่สตริงข้อความในไฟล์ – sed
เครื่องมือ sed เป็นวิธีที่ดีที่สุดในการแทนที่สตริงข้อความในไฟล์บน Linux เหตุผล? ใช้งานง่ายและทำงานได้ดีมาก โดยปกติ Sed จะติดตั้งไว้ล่วงหน้าบนระบบปฏิบัติการ Linux 99% ดังนั้นจึงไม่จำเป็นต้องติดตั้งเพื่อใช้งาน
การแทนที่สตริงข้อความในไฟล์ด้วย Sed ทำได้โดยใช้คำสั่ง sed -i นี่คือวิธีการใช้งาน ขั้นแรก เปิดหน้าต่างเทอร์มินัลบนเดสก์ท็อป Linux คุณสามารถเปิดหน้าต่างเทอร์มินัลโดยกด Ctrl + Alt + T บนแป้นพิมพ์
เมื่อหน้าต่างเทอร์มินัลเปิดและพร้อมใช้งานแล้ว ให้เขียน sed -i ในพรอมต์เทอร์มินัล นี่คือการเริ่มต้นของคำสั่งการแทนที่
sed -i
หลังจากเขียนคำสั่ง sed -i แล้ว ให้เพิ่มเครื่องหมายคำพูด ‘ เครื่องหมายคำพูดนี้จำเป็น เนื่องจากข้อความทั้งหมดจะถูกแทนที่ด้วย sed -i ต้องเริ่มหลังเครื่องหมายนี้
sed -i '
ตามเครื่องหมาย ‘ แรก ให้เขียน s/ s/ ไปโดยตรงก่อนข้อความที่มีอยู่ที่คุณต้องการแทนที่โดยใช้ sed
sed -i 's/
ตอนนี้ s/ ถูกเขียนลงในพรอมต์บรรทัดคำสั่งของเทอร์มินัลแล้ว ก็ถึงเวลาบอก sed ว่าจะแทนที่ข้อความใดในไฟล์ ในตัวอย่างนี้ เราจะแทนที่คำว่า “apple”
sed -i 's/apple
เมื่อข้อความที่เราต้องการแทนที่ถูกเขียนลงในคำสั่ง ขั้นตอนต่อไปคือการเขียนข้อความใหม่ที่จะแทนที่ ในตัวอย่างนี้ เราจะแทนที่ “apples” ด้วย “oranges”
sed -i 's/apples/oranges
เมื่อข้อความที่เราต้องการแทนที่ถูกเขียนลงในคำสั่ง (สีส้ม) ให้ปิดคำสั่งด้วย g/ g/ บอกให้ sed แทนที่ข้อความทั้งหมด (แอปเปิ้ล) ด้วยข้อความใหม่ (สีส้ม) ควรมีลักษณะเหมือนตัวอย่างด้านล่าง
หมายเหตุ: หากคุณไม่ต้องการแทนที่ทุกข้อความในไฟล์ (เช่น apples to oranges) ให้นำ g ออกและกำหนดให้ทำงานเป็น sed -i ‘s/apples/oranges/’ แทน
sed -i 's/apple/orange/g'
สุดท้ายบอก sed ว่าไฟล์ใดอยู่ในข้อความที่ต้องการเปลี่ยน ในตัวอย่างนี้ fruit.txt ในโฮมไดเร็กทอรีเป็นเป้าหมาย
sed -i 's/apples/oranges/g' ~/fruit.txt
กดปุ่ม Enter เพื่อรันคำสั่งและแทนที่สตริงข้อความในไฟล์
แทนที่สตริงข้อความในไฟล์ – Perl
อีกวิธีในการแทนที่สตริงข้อความในไฟล์บน Linux คือการใช้ภาษาการเขียนโปรแกรม Perl Perl ใช้สำหรับการประมวลผลข้อความเป็นจำนวนมาก ดังนั้นจึงสามารถสลับสตริงข้อความในไฟล์ได้ตามปกติ และเหมาะอย่างยิ่งสำหรับกรณีการใช้งานนี้
ในการเริ่มต้น ตรวจสอบให้แน่ใจว่าคุณได้ติดตั้ง Perl บนพีซี Linux ของคุณ ระบบปฏิบัติการ Linux ส่วนใหญ่มาพร้อมกับ Perl ที่ติดตั้งไว้ อย่างไรก็ตาม หากคุณไม่มี ให้ตรวจสอบหน้าความช่วยเหลือของระบบปฏิบัติการเพื่อดูข้อมูลเกี่ยวกับวิธีการทำงาน
การใช้ Perl เพื่อแทนที่สตริงข้อความในไฟล์ต้องใช้เทอร์มินัล เปิดเทอร์มินัลบนเดสก์ท็อป Linux โดยกด Ctrl + Alt + T บนแป้นพิมพ์ หรือค้นหา “Terminal” ในเมนูแอปแล้วเปิดใช้ด้วยวิธีนี้
เมื่อหน้าต่างเทอร์มินัลเปิดขึ้นและพร้อมใช้งาน ให้เริ่มโดยพิมพ์ perl -pe ในพรอมต์บรรทัดคำสั่ง คำสั่ง perl -pe คือสิ่งที่จำเป็นในการแทนที่สตริงข้อความในไฟล์
perl -pe
เมื่อเขียน perl -pe ในข้อความแจ้งเทอร์มินัล คุณจะต้องเริ่มต้นด้วยเครื่องหมายอัญประกาศ ‘ เครื่องหมายนี้บอก Perl ว่าพื้นที่การแทนที่ข้อความอยู่ในคำสั่งใด
perl -pe '
ต่อจากเครื่องหมายคำพูด ‘ ตัวแรก ให้เติม s/ ตามด้วยสตริงข้อความที่คุณต้องการแทนที่ และ / ตัวอย่างเช่น หากต้องการแทนที่ “apples” ในไฟล์ fruit.txt คุณจะต้องเขียนข้อความต่อไปนี้
perl -pe 's/apples/
หลังจากเขียนคำที่คุณต้องการแทนที่แล้ว ให้เพิ่มคำที่จะแทนที่ข้อความที่มีอยู่ ตัวอย่างเช่น หากคุณต้องการแทนที่ “apples” ใน “fruit.txt” ด้วย “oranges” ให้เพิ่ม “oranges” หลัง perl -pe ‘s/apples/ เพื่อให้ดูเหมือน perl -pe ‘s/apples/oranges/ .
perl -pe 's/apples/oranges/
เมื่อสตริงข้อความทั้งสองอยู่ในคำสั่งแล้ว คุณจะต้องระบุไฟล์อินพุตที่ Perl ใช้ ตัวอย่างเช่น หากคุณต้องการแทนที่ข้อความในไฟล์ “fruit.txt” คุณจะต้องระบุข้อความในคำสั่ง
หมายเหตุ: ในตัวอย่างนี้ ไฟล์ “fruit.txt” อยู่ในโฮมไดเร็กทอรี (~/) อย่าลืมแทนที่ “~/fruit.txt” ด้วยตำแหน่งของไฟล์ข้อความเพื่อให้คำสั่งทำงาน
perl -pe 's/apples/oranges/' ~/fruit.txt
เมื่อไฟล์อินพุต (ไฟล์ที่คุณกำลังแก้ไขด้วย Perl) ถูกเพิ่มลงในคำสั่งแล้ว คำสั่งควรมีลักษณะเหมือนด้านล่าง
perl -pe 's/apples/oranges/' ~/fruit.txt > /tmp/output.txt;cat /tmp/output.txt > ~/fruit.txt
เมื่อรันคำสั่งด้านบน สตริงข้อความจะถูกแทนที่ด้วยข้อความใหม่ที่คุณระบุ ในตัวอย่างของเรา เราแทนที่ “แอปเปิล” ด้วย “ส้ม” หากต้องการดูการเปลี่ยนแปลง ให้ป้อนคำสั่งด้านล่าง
cat fruit.txt