SED:不能替换在文件中的行,sed的:-e表达#1,炭32:未知的选项为`s'的

问题描述:

我试图在现有的文件来替换单个线SED:不能替换在文件中的行,sed的:-e表达#1,炭32:未知的选项为`s'的

sed -i -e 's/# elasticsearch.url: "http://localhost:9200"/elasticsearch.url: "http://myOwnHost:9200"/g' config/kibana.yml 

,但我得到一个错误

sed: -e expression #1, char 32: unknown option to `s' 

我可以找出如何以及在这里逃脱什么。我对sed很新。

在您的sed声明中/字符用作分隔符。例如s/search/replace/g。既然你在你的字符串中有/ s,那就搞乱了。虽然/通常用作分隔符,但您可以使用其他字符。在你的情况下,我会使用管道|s|search|replace|g。或者,您可以使用/并跳过字符串中的斜杠:\/,但这会变得混乱。

+0

我需要逃避'#'吗? – AbtPst

+1

没有,除非你决定使用'#'作为分隔符,这是另一种常见的选择。 – dan08

+0

谢谢!这样可行 – AbtPst

你必须使用反斜杠转义正斜杠字符!

sed -i -e 's/# elasticsearch.url: "http:\/\/localhost:9200"/elasticsearch.url: "http:\/\/myOwnHost:9200"/g' config/kibana.yml