![파일에서 특정 JSON 개체를 제거하는 방법은 무엇입니까?](https://linux55.com/image/205209/%ED%8C%8C%EC%9D%BC%EC%97%90%EC%84%9C%20%ED%8A%B9%EC%A0%95%20JSON%20%EA%B0%9C%EC%B2%B4%EB%A5%BC%20%EC%A0%9C%EA%B1%B0%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
내 파일에 다음 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
삭제 하려면 다음 을 수행하세요 ..name
code
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
출력을 새 파일로 리디렉션하고 문제가 없으면 이전 파일을 해당 파일로 바꿉니다.