如果要使用sed将关键字替换为字符串,sed会尝试解释您的替换字符串。如果替换字符串碰巧包含sed认为特殊的字符(例如'/'字符),则它将失败,除非您当然是要让替换字符串包含告诉sed如何操作的字符。
例如:
VAR="hi/"
sed "s/KEYWORD/$VAR/g" somefile
有没有办法告诉sed不要尝试解释特殊字符的替换字符串?我想要的是能够用变量的内容替换文件中的关键字,无论该内容是什么。
sed(1)
只是解释它会得到什么。在您的情况下,它是通过外壳插值获得的。我相信您无法按照自己的意愿做,但请查阅手册。我知道在Perl中(这是一个可以通过的sed
替代方法,具有更丰富的正则表达式),您可以指定要从字面上接受的字符串,再次检查一下手册。
sed
而不让它们特殊,则只需反斜杠即可将其转义。VAR='hi\/'
没有任何问题。