jq:更改多个值

Ora*_*Pot 8 json edit jq

我正试图用这一行改变多个json值

 jq '.two="newval", .three="newval"' my.json 
Run Code Online (Sandbox Code Playgroud)

这是输入

{
  "one": {
    "val": 1
  },
  "two": "val",
  "three": "val",
  "four": "val"
}
Run Code Online (Sandbox Code Playgroud)

但输出是2 jsons:

{
  "one": {
    "val": 1
  },
  "two": "newval",
  "three": "val",
  "four": "val"
}
{
  "one": {
    "val": 1
  },
  "two": "val",
  "three": "newval",
  "four": "val"
}
Run Code Online (Sandbox Code Playgroud)

如何在一个项目中更改多个值和输出?

pea*_*eak 17

只需将逗号更改为竖线字符就可以了:

.two="newval" | .three="newval"
Run Code Online (Sandbox Code Playgroud)

","用于连接流:A,B将发出A然后发出B.

  • 该语法比所选答案干净且易于记住。 (4认同)

jq1*_*727 5

这是一种使用+对象添加来更新多个成员的方法。

. + {two:"newtwo", three:"newthree"}
Run Code Online (Sandbox Code Playgroud)

样本运行(假设中的数据data.json

$ jq -M '. + {two:"newtwo", three:"newthree"}' data.json
{
  "one": {
    "val": 1
  },
  "two": "newtwo",
  "three": "newthree",
  "four": "val"
}
Run Code Online (Sandbox Code Playgroud)

在jqplay.org上在线尝试