【问题标题】:SED : cant replace line in file, sed: -e expression #1, char 32: unknown option to `s' [duplicate]SED:无法替换文件中的行,sed:-e 表达式 #1,字符 32:“s”的未知选项 [重复]
【发布时间】:2016-08-16 05:04:35
【问题描述】:

我正在尝试将现有文件中的单行替换为

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


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    在您的sed 语句中,/ 字符用作分隔符。例如s/search/replace/g。因为你的字符串中有/s,所以它把事情搞砸了。虽然/ 通常用作分隔符,但您可以使用其他字符。在你的情况下,我会使用管道 | 例如s|search|replace|g。或者,您可以使用 / 并转义字符串中的斜杠:\/,但这会变得混乱。

    【讨论】:

    • 我需要转义#吗?
    • 不,除非您决定使用 # 作为分隔符,这是另一种常见的选择。
    猜你喜欢
    • 2014-04-06
    • 2020-11-25
    • 2018-04-25
    • 2022-12-28
    • 2013-03-08
    • 2021-02-07
    • 2018-03-11
    • 2019-03-17
    • 1970-01-01
    相关资源
    最近更新 更多