gpt4 book ai didi

bash - 当键是已知字符串时,使用 jq 删除键/值对

转载 作者:行者123 更新时间:2023-11-29 09:38:56 24 4
gpt4 key购买 nike

我正在尝试从 json 文件中删除一个特定的键/值对。

对于这个例子,我的 json 文件是 params.json

[ 
{
"ParameterKey": "RTSMMinSize",
"ParameterValue": "1"
},
{
"ParameterKey": "RTSMReplicateDB",
"ParameterValue": "false"
},
{
"ParameterKey": "RTSMSnapshotID",
"ParameterValue": "snapID"
},
{
"ParameterKey": "RTSMEMAIL",
"ParameterValue": ""
}
]

我想在我的 bash 脚本中完全删除 RTSMSnapshotID 键值对。该文件应如下所示:

[ 
{
"ParameterKey": "RTSMMinSize",
"ParameterValue": "1"
},
{
"ParameterKey": "RTSMReplicateDB",
"ParameterValue": "false"
},
{
"ParameterKey": "RTSMEMAIL",
"ParameterValue": ""
}
]

我以为这会很简单

jq 'del(.RTSMSnapshotID)' params.json  

但是我得到了

jq: error (at <filename>): Cannot index array with string "RTSMSnapshotID"

显然我不明白删除是如何工作的。有帮助吗?

最佳答案

del(.foo) 期望有一个顶级字典,其键名为 foo。这里不是这种情况;相反,您有一个顶级列表,其中 ParameterKey 具有一系列值,您只想删除其中一个值。

jq '[ .[] | select(.ParameterKey != "RTSMSnapshotID") ]'

……或者……

jq 'map(select(.ParameterKey != "RTSMSnapshotID"))'

关于bash - 当键是已知字符串时,使用 jq 删除键/值对,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55857004/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com