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