【发布时间】:2015-02-27 03:38:12
【问题描述】:
我需要编辑一个 JSON 文件,使用 sed,将一些数据添加到文件中。 JSON如下:
{
'name':
// more attributes that are already filled in
}
我写了这个sed 命令来尝试一下:
sed "s/(\'name\':)/\1\"hello\"\,/g" /path/to/file.json
但是,我不断收到此错误:
sed: \1 not defined in the RE
预期结果是:
{
'name': "hello",
// more attributes here, left untouched
}
我知道这是一种不好的做法,但我认为我无法使用诸如 jq 之类的工具,因为该文件将在服务器上进行编辑,而我无法在服务器上安装 jq .如果有人有更好的解决方案,我很想听听。谢谢!
【问题讨论】:
-
对于级联语言(如 JSON),最好永远不要使用正则表达式,而是使用上下文无关语法,甚至更好:特定语言工具。尤其是如果您希望您的工具可靠,这确实是一种不好的做法:最终它总会以某种方式出错。
-
正如您所说,这是一种不好的做法。
jq可以按原样下载并在没有依赖关系的情况下执行 -
你需要转义冒号吗?可能值得一试。
-
同意上面关于不使用 sed 的观点,但并非所有
seds 都以相同的方式工作。您可能需要使用's/\(\'name\':\)/\1....'。祝你好运。