使用jq的两个过滤器的两个json文件的输出对象

时间:2019-08-23 09:07:16

标签: json jq

我有这两个json文件:

文件0.json

{
  "Feline": [
    {
      "Name": "Leo",
      "Race": "Bengal",
      "Weight": "12"
    },
    {
      "Name": "Diego",
      "Race": "Toyger",
      "Weight": "24"
    }
  ]
}

文件1.json

{
  "Feline": [
    {
      "Name": "Lynx",
      "Race": "Bengal",
      "Weight": "15"
    },
    {
      "Name": "Simba",
      "Race": "Ussuri",
      "Weight": "14"
    }
  ]
}

有了jq,我想要最重的猫科动物,其种族是这两个json文件中的孟加拉。

因此输出将为

{
  "Feline": [
    {
      "Name": "Lynx",
      "Race": "Bengal",
      "Weight": "15"
    }
  ]
}

我尝试将--slurp和--arg和pipe结合在一起,但没有具体结果。 如果有人知道该怎么做,我将非常感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

$ jq -n '{Feline: [
  [inputs.Feline[] | select(.Race=="Bengal")] | max_by(.Weight)
]}' file1 file2
{
  "Feline": [
    {
      "Name": "Lynx",
      "Race": "Bengal",
      "Weight": "15"
    }
  ]
}

答案 1 :(得分:0)

具有以下管道:

$ jq -s '[.[] | .Feline[] | select(.Race == "Bengal")] | max_by(.Weight) | {"Feline": [.]}' f1 f2
{
  "Feline": [
    {
      "Name": "Lynx",
      "Race": "Bengal",
      "Weight": "15"
    }
  ]
}