一尘不染

就地使用jq修改json中的键值

json

我有一个想要修改特定值的json,但是终端总是显示带有修改后值的json,但实际上并不会更改特定文件中的值。样本json:

{
   name: 'abcd',
   age: 30,
   address: 'abc'
}

我想更改文件本身中的address的值,但到目前为止,我一直无法更改。我尝试使用:

jq '.address = "abcde"' test.json

但这没用。有什么建议?


阅读 690

收藏
2020-07-27

共1个答案

一尘不染

AFAIK
jq不支持就地编辑,因此您必须先重定向到一个临时文件,然后再用它替换原始文件,或者使用spongemoreutils包中的实用程序,如下所示:

jq '.address = "abcde"' test.json|sponge test.json

还有其他“重定向到相同文件”的技术,例如,将输出保存在变量中,例如“ Unix&Linux
StackExchange”是一个很好的起点,如果您想了解更多信息。

2020-07-27