[英]jq: easiest way to recursively remove objects based on object value condition
[英]JQ remove objects based on key value
我正在尝试从 JSON 有效负载中删除对象,如果它们具有具有特定值的键
{
"data": [
{
"account": "12xUoMKwf12ABjNx4VCvYcNkX79gW1kzz2JnBLxkFbjswRczRvM",
"gateway": "113kQU96zqePySTahB7PEde9ZpoWK76DYK1f57wyhjhXCBoAu88",
"hash": "DTU1GGfR0eU15hv6KiV_bg6FOJXfUWz4TjIq1H7TGy4",
"timestamp": "2020-08-28T01:29:46.000000Z"
},
{
"account": "12xUoMKwf12ABjNx4VCvYcNkX79gW1kzz2JnBLxkFbjswRczRvM",
"gateway": "113kQU96zqePySTahB7PEde9ZpoWK76DYK1f57wyhjhXCBoAu88",
"hash": "l3EQR6AJ6R1qE1meHyafDnNF8vJ-X-rH1pujxQRTds4",
"timestamp": "2020-08-28T00:50:44.000000Z"
},
{
"account": "12xUoMKwf12ABjNx4VCvYcNkX79gW1kzz2JnBLxkFbjswRczRvM",
"gateway": "113kQU96zqePySTahB7PEde9ZpoWK76DYK1f57wyhjhXCBoAu88",
"hash": "5fQJY9MprH9b3IstVU1SdfBteUWoF_sdsVuiARPBtTY",
"timestamp": "2020-08-27T19:01:48.000000Z"
},
{
"account": "12xUoMKwf12ABjNx4VCvYcNkX79gW1kzz2JnBLxkFbjswRczRvM",
"gateway": "113kQU96zqePySTahB7PEde9ZpoWK76DYK1f57wyhjhXCBoAu88",
"hash": "0M0fudEmzW9dmAsO3dcWT286tTL6wTX9sllXtsyz-0Q",
"timestamp": "2020-08-27T18:15:17.000000Z"
}
]
}
我想删除整个 object ,其中.data[].hash
== 0M0fudEmzW9dmAsO3dcWT286tTL6wTX9sllXtsyz-0Q
生成:
{
"data": [
{
"account": "12xUoMKwf12ABjNx4VCvYcNkX79gW1kzz2JnBLxkFbjswRczRvM",
"gateway": "113kQU96zqePySTahB7PEde9ZpoWK76DYK1f57wyhjhXCBoAu88",
"hash": "DTU1GGfR0eU15hv6KiV_bg6FOJXfUWz4TjIq1H7TGy4",
"timestamp": "2020-08-28T01:29:46.000000Z"
},
{
"account": "12xUoMKwf12ABjNx4VCvYcNkX79gW1kzz2JnBLxkFbjswRczRvM",
"gateway": "113kQU96zqePySTahB7PEde9ZpoWK76DYK1f57wyhjhXCBoAu88",
"hash": "l3EQR6AJ6R1qE1meHyafDnNF8vJ-X-rH1pujxQRTds4",
"timestamp": "2020-08-28T00:50:44.000000Z"
},
{
"account": "12xUoMKwf12ABjNx4VCvYcNkX79gW1kzz2JnBLxkFbjswRczRvM",
"gateway": "113kQU96zqePySTahB7PEde9ZpoWK76DYK1f57wyhjhXCBoAu88",
"hash": "5fQJY9MprH9b3IstVU1SdfBteUWoF_sdsVuiARPBtTY",
"timestamp": "2020-08-27T19:01:48.000000Z"
}
]
}
这可能吗? object 的大小可以变化,并且在有效负载中有许多不同的密钥。 不变且唯一的一件事是.data[].hash
键
谢谢
您可以将del与select function 一起使用,例如
jq 'del(.data[] | select(.hash == "0M0fudEmzW9dmAsO3dcWT286tTL6wTX9sllXtsyz-0Q"))'
如果目标真的是:
从 JSON 有效负载中删除对象(如果它们具有具有特定值的键)
其中关键是hash
,那么你可以像这样使用walk
:
walk(if type=="object" and
.hash == "0M0fudEmzW9dmAsO3dcWT286tTL6wTX9sllXtsyz-0Q"
then empty else . end)
请注意,此程序中没有对.data
的引用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.