jqを使用してjsonファイルをマージする

jqを使用してjsonファイルをマージする

"jq -s .file1 file2"コマンドを使用して2つのjsonファイルをマージしようとしています。ただし、このファイルの内容をカンマで区切って[]で始めてはいけません。

ファイル1:

{
  "node1": {
    "Environment": "PRD",
    "OS": "linux"
  },
  "node2": {
    "Environment": "NPR",
    "OS": "linux"
  }
}

ファイル2:

{
  "node3": {
    "Environment": "PRD",
    "OS": "linux"
  },
  "node4": {
    "Environment": "NPR",
    "OS": "linux"
  }
}

出力にはjq -sを使用してください。ファイル1ファイル2

[
    {
      "node1": {
        "Environment": "PRD",
        "OS": "linux"
      },
      "node2": {
        "Environment": "NPR",
        "OS": "linux"
      }
    },
    {
      "node3": {
        "Environment": "PRD",
        "OS": "linux"
      },
      "node4": {
        "Environment": "NPR",
        "OS": "linux"
      }
    }
]

希望の出力:

{
  "node1": {
    "Environment": "PRD",
    "OS": "linux"
  },
  "node2": {
    "Environment": "NPR",
    "OS": "linux"
  },
    "node3": {
    "Environment": "PRD",
    "OS": "linux"
  },
  "node4": {
    "Environment": "NPR",
    "OS": "linux"
  }
} 

誰もが解決策を見つけるのに役立ちますか?ありがとう

ベストアンサー1

$ jq -s 'add' file[12].json
{
  "node1": {
    "Environment": "PRD",
    "OS": "linux"
  },
  "node2": {
    "Environment": "NPR",
    "OS": "linux"
  },
  "node3": {
    "Environment": "PRD",
    "OS": "linux"
  },
  "node4": {
    "Environment": "NPR",
    "OS": "linux"
  }
}

addファイル内で結合するリストの最上位キーを使用して、これらのキーのマージされたオブジェクトを作成します。

おすすめ記事