파일에서 특정 JSON 개체를 제거하는 방법은 무엇입니까?

파일에서 특정 JSON 개체를 제거하는 방법은 무엇입니까?

내 파일에 다음 JSON 데이터가 있습니다.

{
  "packages": {
    "cc": {
      "name": "cc",
      "version": "3.1",
      "release": "0.4",
      "arch": "x86"
    },
    "code": {
      "name": "code",
      "version": "3.0",
      "release": "2.0.2",
      "arch": "x86"
    }
  }
}

code파일에서 전체 개체를 삭제 하고 싶습니다 . 명령줄 도구를 사용하여 이 작업을 어떻게 수행할 수 있나요?

답변1

.packages.code키와 해당 값을 삭제하려면 다음을 사용하세요 jq.

jq 'del(.packages.code)' file.json

키 값이 다음과 같은 항목을 .packages삭제 하려면 다음 을 수행하세요 ..namecode

jq 'del(.packages[] | select(.name == "code"))' file.json

두 명령은 동일하지만 code쉘 변수에서 문자열을 가져옵니다.

string=code

jq --arg key "$string" 'del(.packages[$key])' file.json

jq --arg key "$string" 'del(.packages[] | select(.name == $key))' file.json

출력을 새 파일로 리디렉션하고 문제가 없으면 이전 파일을 해당 파일로 바꿉니다.

관련 정보