Удаление нескольких строк

Я пытаюсь описать интерфейсы командной строки, которые будут удалять конкретный раздел / строки кодов в рамках списка 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 онлайн..

Какие-либо идеи?

1
30.05.2016, 20:55
1 ответ

вопрос старый, однако для полноты вариантов вот решение на основе jtc :

bash $ jtc -pw'<map>l+0' input.json
{
   "tags": {
      "dynamic": true,
      "type": [
         "char"
      ]
   }
}
bash $ 
  • он найдет все метки "map"и очистит их все (, сохранив остальную часть json)
0
27.01.2020, 23:28

Теги

Похожие вопросы