删除 Windows shell 脚本上嵌套 json 文件中的键

问题描述 投票:0回答:1

我想在 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

但我没能删除一个顶级密钥。

windows jq
1个回答
0
投票

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
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.