我有一个 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'