Я пытаюсь описать интерфейсы командной строки, которые будут удалять конкретный раздел / строки кодов в рамках списка json файлов. Между прочим, json файл расположены в подпапках основного каталога
Я довольно плохо знаком с этим, но это - код, который я могу придумать до сих пор - find -name "*.json" | xargs sed -i "map"
но некоторые json файлы, которые я имел, его формат, немного отличаются
До сих пор я вижу следующие 2 формата в рамках своего списка:
{
"tags": {},
"map": {
"KPA": {
"State": True,
"namespace": "KPA01"
}
}
}
или
{
"tags": {
"type": [
"char"
],
"dynamic": true
},
"map": {
"KPA01": {
"State": True,
"namespace": "KPA01"
}
}
}
и в основном, я пытаюсь опустить раздел карты, который это имеет, так, чтобы это только отобразило раздел тегов, но присутствие запятых и []
/ {}
мешают мне. Таким образом, мои выходные результаты должны быть похожими на это:
{
"tags": {}
}
или
{
"tags": {
"type": [
"char"
],
"dynamic": true
}
}
Это будет возможно сделать так в интерфейсе командной строки? Я слышал, что jq может делать это, однако, когда я пытался выполниться jq '.map' test.json
Я добираюсь parse error: ':' not as part of an object at line 2, column 11
в моем терминале. Аналогично это также, кажется, испускает ошибку, если я использую игру jq онлайн..
Какие-либо идеи?
вопрос старый, однако для полноты вариантов вот решение на основе jtc :
bash $ jtc -pw'<map>l+0' input.json
{
"tags": {
"dynamic": true,
"type": [
"char"
]
}
}
bash $
"map"
и очистит их все (, сохранив остальную часть json)