ฉันต้องการแทนที่ข้อความภายในไฟล์ข้อความด้วยการแทนที่ โดยปกติฉันจะทำอะไรเช่น
sed -i 's/text/replacement/g' path/to/the/file
ปัญหาคือทั้งสองtext
และreplacement
เป็นสตริงที่ซับซ้อนที่มีเครื่องหมายขีดกลาง, เครื่องหมายทับ, blackslashes, คำพูดและอื่น ๆ ถ้าฉันหลบหนีอักขระที่จำเป็นทั้งหมดภายในtext
สิ่งนั้นจะกลายเป็นอ่านไม่ได้ ในขณะที่ฉันไม่ต้องการพลังของการแสดงออกปกติ: ฉันแค่ต้องการแทนที่ข้อความอย่างแท้จริง
มีวิธีการแทนที่ข้อความโดยไม่ใช้นิพจน์ทั่วไปด้วยคำสั่ง bash หรือไม่?
มันค่อนข้างจะเป็นเรื่องเล็กน้อยที่จะเขียนสคริปต์ที่ทำสิ่งนี้ แต่ฉันคิดว่าควรจะมีบางสิ่งอยู่แล้ว
bash
พร้อมกับ Microsoft Word? ;) ไม่เพียงแค่ล้อเล่น. OP อาจต้องการทำสิ่งนี้บนเครื่องระยะไกลหรือสำหรับชุดของไฟล์
sed
ซึ่งอาจเป็นความพยายามที่ไร้ประโยชน์เมื่อพิจารณาถึงสวิตช์และความแตกต่างของแพลตฟอร์มทั้งหมด
find and replace all