【问题标题】:jq: Change multiple valuesjq:更改多个值
【发布时间】:2017-11-17 17:09:32
【问题描述】:

我正在尝试用这一行更改多个 json 值

 jq '.two="newval", .three="newval"' my.json 

这是输入

{
  "one": {
    "val": 1
  },
  "two": "val",
  "three": "val",
  "four": "val"
}

但输出是 2 个 jsons:

{
  "one": {
    "val": 1
  },
  "two": "newval",
  "three": "val",
  "four": "val"
}
{
  "one": {
    "val": 1
  },
  "two": "val",
  "three": "newval",
  "four": "val"
}

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

【问题讨论】:

    标签: jq


    【解决方案1】:

    只需将逗号更改为竖线字符即可:

    .two="newval" | .three="newval"
    

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

    【讨论】:

    • 这个语法比选择的答案简洁易记。
    【解决方案2】:

    这是一个使用+ object addition更新多个成员的方法。

    . + {two:"newtwo", three:"newthree"}
    

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

    $ jq -M '. + {two:"newtwo", three:"newthree"}' data.json
    {
      "one": {
        "val": 1
      },
      "two": "newtwo",
      "three": "newthree",
      "four": "val"
    }
    

    Try it online at jqplay.org

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多