Bash sed:在sed中使用变量

Bash sed:在sed中使用变量,bash,Bash,我正在编写一个脚本来更改文件中的路径。这就是我想做的。如果我有一个字符串为“/path/to/error/location”的文件,我想将其更改为“/path/to/correct/location”。我试着用sed来做这件事 sed-i“s/$badpath/$goodpath/g”文件 尽管这样做,却毫无用处,我一辈子也弄不明白。我确实需要为坏路径使用变量,但是好路径可以被写出来(因为它永远不会改变)。你会怎么做 更多信息: 我正在使用GNU sed,因此-I标志是有效的。在修复分隔符后,似

我正在编写一个脚本来更改文件中的路径。这就是我想做的。如果我有一个字符串为“/path/to/error/location”的文件,我想将其更改为“/path/to/correct/location”。我试着用sed来做这件事

sed-i“s/$badpath/$goodpath/g”文件

尽管这样做,却毫无用处,我一辈子也弄不明白。我确实需要为坏路径使用变量,但是好路径可以被写出来(因为它永远不会改变)。你会怎么做

更多信息:


我正在使用GNU sed,因此
-I
标志是有效的。

在修复分隔符后,似乎对我有效:

$ cat sample
/path/to/incorrect/location
$ badpath="/path/to/incorrect/location"
$ goodpath="/path/to/correct/location"
$ sed -i "s|$badpath|$goodpath|" sample
$ cat sample
/path/to/correct/location

$badpath或$goodpath中有/吗?那会扰乱总统的指挥。我建议使用不同的分隔符。我通常在任何/(“/”->“\/”)之前固定要添加的变量。不幸的是,这没有帮助。请尝试打印变量,以查看从
\
\/
的替换是如何工作的,并且它们确实正确地进行了替换。larsks的答案提供了一个比我试图寻求的更好的解决方案。我实际上不知道可以使用不同的分隔符。谢谢