jq를 사용하여 json 파일 병합

jq를 사용하여 json 파일 병합

"jq -s . file1 file2" 명령을 사용하여 두 개의 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파일에서 결합될 목록의 최상위 키를 사용하여 이러한 키의 병합된 개체를 만듭니다.

관련 정보