如何在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