หากคุณมีรูปแบบการค้นหาอื่น ๆ อีกมากมายคุณสามารถบันทึกไว้ในไฟล์และอ่านการแทนที่จากที่นั่น ตัวอย่างเช่นสมมติว่าเนื้อหาเหล่านี้เป็นของreplacements.txt
:
www\.abcdef www.test.abcdef
www\.klmnop www.test.klmnop
จากนั้นคุณสามารถอ่านรายการการแทนที่ N และแทนที่ด้วยสิ่งนี้:
while read from to; do
sed -i "s/$from/$to/" infile.txt ;
done < replacements.txt
หมายเหตุ:
- นี้จะถือว่าสตริงการค้นหาของคุณไม่ได้มีช่องว่างและตัวอักษรแปลก ๆ
replacements.txt
จะต้องมีการหนี
- มันจะเรียกใช้หนึ่งครั้ง
sed
ต่อการทดแทนซึ่งอาจใช้เวลาสักครู่หากคุณมีการดำเนินการทดแทนมากมาย
- มันสามารถจัดการกับจำนวนการแทนที่โดยพลการ (หลายพันหรือหลายล้านหรืออะไรก็ตาม) ตราบใดที่คุณไม่ทราบว่าจะใช้เวลาเพิ่มอีกสักนิด
ตัวเลือกอื่นจะเขียนข้างต้นเป็นsed
สคริปต์:
s/www\.abcdef/www\.test\.abcdef/g;
s/www\.kmlnop/www\.test\.klmnop/g;
s/aaaa/bbbb/g;
s/cccc/dddd/g;
s/eeee/ffff/g;
จากนั้นคุณสามารถเรียกใช้สคริปต์ในไฟล์ของคุณและมันจะทำการแทนที่ทั้งหมดในครั้งเดียว:
sed -f replace.sed infile.txt