Nếu bạn muốn thay thế một từ khóa bằng một chuỗi bằng sed, sed sẽ cố gắng diễn giải chuỗi thay thế của bạn. Nếu chuỗi thay thế xảy ra có các ký tự mà sed coi là đặc biệt, như ký tự '/', nó sẽ thất bại, trừ khi tất nhiên bạn có nghĩa là chuỗi thay thế của bạn có các ký tự cho sed biết cách hành động.
Ví dụ:
VAR="hi/"
sed "s/KEYWORD/$VAR/g" somefile
Có cách nào để bảo sed đừng cố diễn giải chuỗi thay thế cho các ký tự đặc biệt không? Tất cả những gì tôi muốn là có thể thay thế một từ khóa trong một tệp bằng nội dung của một biến, bất kể nội dung đó là gì.
sed(1)
chỉ diễn giải những gì nó nhận được. Trong trường hợp của bạn, nó nhận được điều đó thông qua phép nội suy shell. Tôi tin rằng bạn không thể làm như bạn muốn, nhưng hãy kiểm tra hướng dẫn. Tôi biết trong Perl (tạo ra một sed
sự thay thế có thể vượt qua , với các biểu thức chính quy phong phú hơn nhiều) bạn có thể chỉ định một chuỗi sẽ được thực hiện theo nghĩa đen, một lần nữa, kiểm tra hướng dẫn.
sed
và khiến chúng không phải là đặc biệt, chỉ cần gạch chéo lại thoát khỏi chúng.VAR='hi\/'
không có vấn đề như vậy.