ค้นหาและแทนที่ข้อความในเอกสารหลายรายการจากบรรทัดคำสั่ง
หากคุณพอใจกับบรรทัดคำสั่งและในสถานการณ์ที่คุณต้องการค้นหาและแทนที่คำวลี URL หรือตัวอักษรในกลุ่มเอกสารข้อความหลาย ๆ ฉบับ perl จะทำงานได้ดีทีเดียว สตริงคำสั่งแบบง่ายๆจะดำเนินการชุดกลุ่มอย่างรวดเร็วและแทนที่ด้วยข้อความไม่ว่าจะเป็นเอกสารเดี่ยวหรือเป็นกลุ่มเอกสารหลายชุด
เช่นเดียวกับหลายสิ่งในบรรทัดคำสั่งไม่มีกระบวนการยืนยันดังนั้นคุณควรตรวจสอบให้แน่ใจว่าไวยากรณ์ของคุณได้รับการตั้งค่าอย่างถูกต้องก่อนที่จะเริ่มต้นคำสั่งมิเช่นนั้นคุณอาจต้องทำอีกครั้งเพื่อค้นหาและแทนที่เพื่อซ่อมแซมการพิมพ์ผิด
ไวยากรณ์คำสั่งพื้นฐานมีดังนี้: perl -pi -w -e 's/THIS/THAT/g;' /path/to/files*.txt
สำหรับ ตัวอย่างคำเดียว ถ้าคุณต้องการแทนที่อินสแตนซ์ทั้งหมดของ "ogre" ด้วย "cornbread" ในทุกไฟล์. txt ภายในโฟลเดอร์ "Documents" จากนั้นคุณจะใช้คำสั่งต่อไปนี้:
perl -pi -w -e 's/ogre/cornbread/g;' ~/Documents/*.txt
สำหรับ ตัวอย่างของการค้นหาและแทนที่ทั้งวลี ให้สมมติว่าเราจะแทนที่ประโยคทั้งหมด "The Chocolate Factory" ด้วยคำว่า "The Wizard of Oz" ในกลุ่มไฟล์. txt ที่ขึ้นต้นด้วย "Films" ที่จัดเก็บอยู่ในเอกสาร ไดเรกทอรี:
perl -pi -w -e 's/The Chocolate Factory/The Wizard of Oz/g;' ~/Documents/Films*.txt
ค้นหาและแทนที่จะทำทันที คุณสามารถตรวจสอบการเปลี่ยนแปลงได้โดยใช้ cat และ grep เพื่อตรวจสอบ:
cat ~/Documents/Films124.txt |grep "Wizard of Oz"
เป็นที่ยอมรับนี้เป็นขั้นสูงเป็นธรรมและใช่ชุดหาและแทนที่ผ่านเอกสารหลายสามารถทำได้ในรูปแบบที่เป็นมิตรกับผู้ใช้ผ่าน Apps GUI เช่น TextWrangler และ BBEdit แต่บางครั้งบรรทัดคำสั่งเป็นเพียงเร็วขึ้นสำหรับงานอย่างรวดเร็วเช่นนี้และอื่น ๆ ที่ มีลักษณะคล้ายกันบวกกับไม่ต้องมีการดาวน์โหลดเพิ่มเติมเพื่อใช้
thumbs ขึ้นใหญ่เพื่อ Lifehacker สำหรับเคล็ดลับที่ยอดเยี่ยม
Update : คำสั่ง 'sed' เป็นอีกหนึ่งวิธีในการค้นหาและแทนที่ด้วย command line ครอบคลุม sed ส่วนใหญ่เป็นหัวข้อสำหรับบทความอื่น แต่รูปแบบพื้นฐานของการใช้ sed สำหรับงานนี้เป็นบิตง่ายและทำให้ง่ายต่อการจดจำ:
sed -i 's/THIS/THAT/g' /path/to/files*.txt
ไม่มีทางถูกหรือผิดดังนั้นไม่ว่าคุณจะใช้ perl หรือ sed จะกลายเป็นเรื่องของความชอบส่วนบุคคล