我想在 shell .cmd 脚本中删除 Windows 上嵌套 json 文件中的一些键及其值,但出现错误。 看起来像是一个引用问题等等。
输入文件:
{
"account_tracker_service_last_update": "13351819478658924",
"alternate_error_pages": {
"backup": true,
"enabled": false
},
"announcement_notification_service_first_run_time": "13272713839385778",
"autocomplete": {
"retention_policy_last_version": 120
},
"browser": {
"app_window_placement": {
"DevToolsApp": {
"always_on_top": false,
"work_area_top": 0
}
},
"clear_data": {
"time_period": 4
},
"last_clear_browsing_data_tab": 1
}
}
我想删除更多的键,但一开始只删除一个:
alternate_error_pages
尝试
jq-win64.exe "del[\".alternate_error_pages\"]" example.json
并得到:
jq: 错误:del/0 未在第 1 行定义: del[".alternate_error_pages"] jq: 1 编译错误
下一个:
jq-win64.exe "del(.name=\"alternate_error_pages\")" example.json
但是得到:
jq:错误(位于 example.json:23):结果为无效路径表达式 {"account_tracker_service_...
我尝试了更多的东西,但这些已经从我的脚本中消失了。
我真正想要实现的是删除这些键:
.alternate_error_pages
.autocomplete
.browser.app_window_placement.DevToolsApp
但我没能删除一个顶级密钥。
del
是一个函数并且需要()
。也不需要引用(或转义).alternate_error_pages。
只需使用 'del(.alternate_error_pages)' 作为过滤器
C:\jq>jq-windows-amd64.exe "del(.alternate_error_pages)" json
{
"account_tracker_service_last_update": "13351819478658924",
"announcement_notification_service_first_run_time": "13272713839385778",
"autocomplete": {
"retention_policy_last_version": 120
},
"browser": {
"app_window_placement": {
"DevToolsApp": {
"always_on_top": false,
"work_area_top": 0
}
},
"clear_data": {
"time_period": 4
},
"last_clear_browsing_data_tab": 1
}
}