Мне нужно удалить несколько ключей одновременно из некоторого 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())
?