尝试使用 sed 在括号内进行搜索和替换

尝试使用 sed 在括号内进行搜索和替换

我有一个 json 文件,除其他设置外,还包含以下数据:

"school": {
    "name": "qwerty",
    "key": "user",
    "secret": "pass",
    "class": ["str1/str2:str3"],
    "grades": []
}, 

str1/str2:str3我正在尝试用abc/def:123
以下方法替换:

sed -i -e 's/"class": \[".+"\]/"class": \["abc/def:123"\]/g' config.json

但它不起作用,没有错误消息。有什么建议吗?ps。格式 str1/str2:str3 出现在配置文件中的其他地方,因此我在正则表达式模式中包含了“class”。

答案1

奇怪,我收到一个错误:

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

它显示了其中一个问题:/必须用反斜杠括起来,或者需要使用不同的分隔符。

第二个问题是+。它也需要反斜杠,但如果我没记错的话,在某些 sed 版本中,您需要使用-E才能使其可用,然后它就不应该被反斜杠。

例如,这在 GNU sed 中对我有用:

sed -E 's="class": \[".+"\]="class": \["abc/def:123"\]=g'

相关内容