使用jq在现有JSON中添加数组的相同元素

时间:2018-07-20 20:35:25

标签: json bash jq

我有一个json文件,我想在json的另一个位置从顶部添加一些值。 我正在尝试使用jq命令行。

{
    "channel": "mychannel",
    "videos": [
        {
            "id": "10",
            "url": "youtube.com"
        },
        {
            "id": "20", 
            "url": "youtube.com"
        }
    ]
}

输出为:

{
    "channel": "mychannel",
    "videos": [
        {
            "channel": "mychannel",
            "id": "10",
            "url": "youtube.com"
        },
        {
            "channel": "mychannel",
            "id": "20", 
            "url": "youtube.com"
        }
    ]
}

在我的json中,“频道”是静态的,始终是相同的值。我需要一种总是在每个视频阵列中串联的方法。

有人可以帮助我吗?

jq .videos +频道

1 个答案:

答案 0 :(得分:3)

在管道的后期使用变量来记住.channel

$ jq '.channel as $ch | .videos[].channel = $ch' tmp.json
{
  "channel": "mychannel",
  "videos": [
    {
      "id": "10",
      "url": "youtube.com",
      "channel": "mychannel"
    },
    {
      "id": "20",
      "url": "youtube.com",
      "channel": "mychannel"
    }
  ]
}