如何在 sed (Unix) 中附加正斜杠

Sha*_*did 0 unix bash sed

我正在尝试使用 bash 将对象添加到 json 文件中。例如下面是我的目标最终结果

{
   ....,
   "publishConfig": {
    "registry": "http://myapp.org:4873/"
   }
}
Run Code Online (Sandbox Code Playgroud)

所以我在脚本中使用以下 bash 命令

sed -i '$s/}/,\n"publishConfig":{\n\t"registry":"http://myapp.org:4873/"\n}\n}/' somefile.json
Run Code Online (Sandbox Code Playgroud)

但是我不断收到以下错误

char 48: 'm 的未知选项

有人可以帮我解决这个正则表达式吗?提前致谢。

Rus*_*nov 5

正则表达式中的斜杠是未转义的。你应该用反斜杠转义它们:

sed -i '$s/}/,\n"publishConfig":{\n\t"registry":"http:\/\/myapp.org:4873\/"\n}\n}/' somefile.json
Run Code Online (Sandbox Code Playgroud)

但我建议选择具有内置 JSON 支持的工具,例如 PHP。或者一种能够处理 JSON 的编程语言。

更新

例如,在 NodeJS 中:

sed -i '$s/}/,\n"publishConfig":{\n\t"registry":"http:\/\/myapp.org:4873\/"\n}\n}/' somefile.json
Run Code Online (Sandbox Code Playgroud)

此处使用Bash 文档