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

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

我想替换$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”。

相关内容