bash JQ。如何修改包含对象列表的json文件中的键值对?

时间:2015-06-30 21:40:38

标签: json bash shell jq

我正在使用jq处理大型json文件。它看起来像这样:

FILE1.json

{
  "person": [
      {
          "name": "sam",
          "age": "40",
          "weight": "180",
          "height": "6"
       },
       {
          "name": "peter",
          "age": "41",
          "weight": "180",
          "height": "6.1"
       },
       {
          "name": "mike",
          "age": "40",
          "weight": "200",
          "height": "5.9"
       },
       {
          "name": "ethan",
          "age": "41",
          "weight": "190",
          "height": "6"
       }
  ]
}

我想使用jq工具将重量值从200更改为195,其中name为" mike"。
我怎么能这样做?

1 个答案:

答案 0 :(得分:6)

我们的想法是更新人员数组,其中名称为"mike"的对象将被修改为weight "195"。否则它就被跳过了。

.person |= map(
    if .name == "mike"
        then .weight = "195"
        else .
    end)

或者更简洁地,搜索人员以更新和更新它们:

(.person[] | select(.name == "mike")).weight = "195"