如何在SED中转义文件路径?

我想在$file替换$fileWithPath ,但是这不起作用,因为(我认为)路径没有被转义。 怎么逃避呢?

 sed -i 's/${fileWithPath}/HAHA/g' $file 

 sed -i 's|'$fileWithPath'|HAHA|g' file 

单引号定义字符串文字。 将变量放在文字外部允许shell扩展该部分。

另外:如果要解析路径,请在sed命令中使用不与目录定界符“/”混淆的分隔符。

在替换字符串或模式字符串包含斜杠的情况下,您可以利用GNU sed允许替换命令的替代分隔符这一事实。 分隔符的常见选择是管道字符| 或散列 – 分隔字符的最佳选择通常取决于正在处理的文件类型。 在你的情况下,你可以尝试

 sed -i 's#'$fileWithPath'#HAHA#g' $file 

最后一个字符’g’用于更改文件中的所有匹配项,如果您只需要更改第一个匹配项,则删除’g’。

带正斜杠的文字字符串的更好方法:

 sed -i "s|my/path|my/other/path|g" myFileOfPaths.txt