我正在尝试从 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/