![](/img/trans.png)
[英]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.