我的文件中有以下 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
从 shell 变量中获取字符串:
string=code
jq --arg key "$string" 'del(.packages[$key])' file.json
jq --arg key "$string" 'del(.packages[] | select(.name == $key))' file.json
将输出重定向到新文件,如果看起来正常,则用该文件替换旧文件。