gpt4 book ai didi

jq - 使用 jq 一次删除多个键

转载 作者:行者123 更新时间:2023-12-04 01:36:16 30 4
gpt4 key购买 nike

我需要从一些 JSON 中一次删除多个键(使用 jq ),并且我正在尝试了解是否有比每次调用 map 和 del 更好的方法。这是我的输入数据:

test.json

[
{
"label": "US : USA : English",
"Country": "USA",
"region": "US",
"Language": "English",
"locale": "en",
"currency": "USD",
"number": "USD"
},
{
"label": "AU : Australia : English",
"Country": "Australia",
"region": "AU",
"Language": "English",
"locale": "en",
"currency": "AUD",
"number": "AUD"
},
{
"label": "CA : Canada : English",
"Country": "Canada",
"region": "CA",
"Language": "English",
"locale": "en",
"currency": "CAD",
"number": "CAD"
}
]

对于每个项目,我想删除 number、Language 和 Country 键。我可以用这个命令做到这一点:
$ cat test.json | jq 'map(del(.Country)) | map(del(.number)) | map(del(.Language))'

效果很好,我得到了所需的输出:
[
{
"label": "US : USA : English",
"region": "US",
"locale": "en",
"currency": "USD"
},
{
"label": "AU : Australia : English",
"region": "AU",
"locale": "en",
"currency": "AUD"
},
{
"label": "CA : Canada : English",
"region": "CA",
"locale": "en",
"currency": "CAD"
}
]

但是,我试图了解是否有 jq指定要删除的多个标签的方式,所以我不必有多个 map(del())指令?

最佳答案

您可以提供要删除的路径流:

$ cat test.json | jq 'map(del(.Country, .number, .Language))'

此外,考虑到,您可能更愿意将您想要的那些列入白名单,而不是将特定 key 列入黑名单:
$ cat test.json | jq 'map({label, region, locale, currency})'

关于jq - 使用 jq 一次删除多个键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36227245/

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