Как удалить блок. кода из json с помощью jq?

#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. Смотрите мои обновления. Что еще более важно — ПОПРОБУЙТЕ. Вы увидите 🙂 Самое важное: прочитайте статью, попробуйте несколько примеров и поэкспериментируйте с различными вариантами выбора. Пожалуйста, отправьте обратно то, что вы найдете 🙂 «Надеюсь, это поможет … по крайней мере, немного.