#json #linux #bash #key #jq
Вопрос:
У меня есть файл json temp.json
, подобный этому —
{
"data": {
"stuff": [
.....
]
},
"time": {
"metrics": 83
}
}
Я хочу удалить этот конкретный блок кода из вышеупомянутого файла json —
,
"time": {
"metrics": 83
}
После удаления я хочу переписать новый json в тот же файл, чтобы новое содержимое в том же файле было —
{
"data": {
"stuff": [
.....
]
}
}
Возможно ли это сделать случайно?
Примечание: число 83 может быть любым числом в целом.
Комментарии:
1. Вот очень хороший трактат о редактировании на месте . Я лично использую реализацию Perl
sponge
, представленную в этой статье.
Ответ №1:
Вот отличный учебник: Baeldung: Руководство по команде Linux jq для обработки JSON.
Может быть, вы можете попробовать что-то вроде этого: jq 'del(.time)' temp.json > temp2.json
.
Обратите внимание, что jq работает на семантическом уровне; это не просто «замена текста». Таким образом, такие вещи, как разделители «запятая» между объектами, будут удалены из текста JSON, когда вы используете jq для удаления объекта.
Поэкспериментируйте и посмотрите, что лучше всего подходит для вашего конкретного сценария.
Комментарии:
1. Спасибо за ссылку, но как насчет запятой, которая у меня была раньше
time
?2. Смотрите мои обновления. Что еще более важно — ПОПРОБУЙТЕ. Вы увидите 🙂 Самое важное: прочитайте статью, попробуйте несколько примеров и поэкспериментируйте с различными вариантами выбора. Пожалуйста, отправьте обратно то, что вы найдете 🙂 «Надеюсь, это поможет … по крайней мере, немного.