jq Contactenate 来自两个不同文件的数组并将输出保存在第一个文件中

jq Contactenate arrays from two different files and save the output in the first file

这就是我想要做的事情。

file1.json

{
  "info": {
    "id": "",
    "name": "Text Fields",
    "schema": "url"
  },
  "item": [
    {
      "name": "CompanyName Field",
      "item": [
        {
          "name": "CompanyName is CompanyName1"
        }
      ]
    }
  ]
}

file2.json

[
  {
    "name": "Phone Field",
    "item": [
      {
        "name": "Phone is 1234"
      }
    ]
  },
  {
    "name": "Job Field",
    "item": [
      {
        "name": "Job is Job1"
      }
    ]
  }
]

运行 jq

后的预期输出

file1.json

{
  "info": {
    "id": "",
    "name": "Text Fields",
    "schema": "url"
  },
  "item": [
    {
      "name": "CompanyName Field",
      "item": [
        {
          "name": "CompanyName is CompanyName1"
        }
      ]
    },
    {
      "name": "Phone Field",
      "item": [
        {
          "name": "Phone is 1234"
        }
      ]
    },
    {
      "name": "Job Field",
      "item": [
        {
          "name": "Job is Job1"
        }
      ]
    }
  ]
}

作为第一步,我尝试至少连接两个文件的数组并将其作为输出,然后再尝试将它们放入第一个文件本身,但这本身并没有发生。 这是我试过的

jq '.item .' file1.json file2.json

但出现以下错误:

jq: error: syntax error, unexpected $end, expecting FORMAT or QQSTRING_START (Unix shell quoting issues?) at <top-level>, line 1:
.item .
jq: 1 compile error

我尝试了很多搜索,相信我。有很多标题相似的查询,但当您仔细研究每一个时,它们似乎都是非常具体的问题。请帮忙。

使用--argfile将第二个文件读入变量,然后+=将其添加到.item

中的现有数组
jq --argfile f file2.json '.item += $f' file1.json
{
  "info": {
    "id": "",
    "name": "Text Fields",
    "schema": "url"
  },
  "item": [
    {
      "name": "CompanyName Field",
      "item": [
        {
          "name": "CompanyName is CompanyName1"
        }
      ]
    },
    {
      "name": "Phone Field",
      "item": [
        {
          "name": "Phone is 1234"
        }
      ]
    },
    {
      "name": "Job Field",
      "item": [
        {
          "name": "Job is Job1"
        }
      ]
    }
  ]
}