Jika Anda ingin mengganti kata kunci dengan string menggunakan sed, sed berusaha keras untuk mengartikan string pengganti Anda. Jika string pengganti kebetulan memiliki karakter yang dianggap spesial, seperti karakter '/', itu akan gagal, kecuali tentu saja Anda bermaksud string pengganti Anda memiliki karakter yang memberi tahu bagaimana bertindak.
Ex:
VAR="hi/"
sed "s/KEYWORD/$VAR/g" somefile
Apakah ada cara untuk memberitahu sed untuk tidak mencoba menafsirkan string pengganti untuk karakter khusus? Yang saya inginkan adalah dapat mengganti kata kunci dalam file dengan konten variabel, apa pun kontennya.
sed(1)
hanya menafsirkan apa yang didapatnya. Dalam kasus Anda, ia mendapatkannya melalui interpolasi shell. Saya percaya Anda tidak dapat melakukan apa yang Anda inginkan, tetapi periksa manualnya. Saya tahu di Perl (yang membuat sed
penggantian lumayan , dengan ekspresi reguler lebih kaya) Anda dapat menentukan string yang harus diambil secara harfiah, sekali lagi, periksa manual.
sed
dan membuatnya tidak istimewa, cukup melarikan diri backslash mereka.VAR='hi\/'
tidak memberikan masalah seperti itu.