我想替换$fileWithPath
,$file
但这行不通,因为(我认为)路径没有转义。如何转义?
sed -i 's/${fileWithPath}/HAHA/g' $file
答案1
sed -i 's|'$fileWithPath'|HAHA|g' file
单引号定义字符串文字。将变量放在文字之外可让 shell 扩展该部分。
另外:如果您要解析路径,请在 sed 命令中使用不会与目录分隔符“/”混淆的分隔符。
答案2
对于带有正斜杠的文字字符串,更好的方法是:
sed -i "s|my/path|my/other/path|g" myFileOfPaths.txt
答案3
在替换字符串或模式字符串包含斜杠的情况下,您可以利用 GNU sed 允许替换命令使用替代分隔符这一事实。分隔符的常见选择是管道字符|或哈希#- 分隔符的最佳选择通常取决于正在处理的文件类型。对于您的情况,您可以尝试
sed -i 's#'$fileWithPath'#HAHA#g' $file
最后一个字符‘g’#用于更改文件中的所有出现,如果您只需要更改第一次出现,则删除“g”。