【发布时间】:2016-07-13 15:22:37
【问题描述】:
我需要从一些 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"
}
]
对于每个项目,我想删除数字、语言和国家/地区键。我可以用这个命令做到这一点:
$ 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()) 指令?
【问题讨论】:
标签: jq