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
。或者,您可以使用/
并跳过字符串中的斜杠:\/
,但这会变得混乱。
答
你必须使用反斜杠转义正斜杠字符!
sed -i -e 's/# elasticsearch.url: "http:\/\/localhost:9200"/elasticsearch.url: "http:\/\/myOwnHost:9200"/g' config/kibana.yml
我需要逃避'#'吗? – AbtPst
没有,除非你决定使用'#'作为分隔符,这是另一种常见的选择。 – dan08
谢谢!这样可行 – AbtPst