내 파일에 다음 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
출력을 새 파일로 리디렉션하고 문제가 없으면 이전 파일을 해당 파일로 바꿉니다.