Как удалить квадратные скобки из определенного места в файле JSON в Linux с помощью JQ - PullRequest
0 голосов
/ 08 марта 2019

Я хочу удалить квадратные скобки, как показано в этом примере:

Входной файл: file1.json

{ "regex_features": [
      [ // This bracket needs to be removed
        {
          "name": "jobname",
          "pattern": "[A-Z]+-[0-9]"
        },
        {
          "name": "project",
          "pattern": "[A-Z]{4}"
        },
        {
          "name": "summary",
          "pattern": "[a-z]+[a-z]+[a-z]{4}"
        },
        {
          "name": "description",
          "pattern": "[a-z]+[a-z]+[a-z]+[a-z]{4}"
        }
      ] // this bracket needs to be removed. 
     ]
}

пожалуйста, предложите.

Ответы [ 2 ]

2 голосов
/ 08 марта 2019

Допустим, у вас есть этот файл.json:

{
  "name": "foo",
  "regex_features": [
    [
      {
        "name": "jobname",
        "pattern": "[A-Z]+-[0-9]"
      },
      {
        "name": "project",
        "pattern": "[A-Z]{4}"
      }
    ]
  ]
}

Вы можете использовать оператор присваивания обновления, чтобы заменить список его первым элементом (который является внутренним списком):

jq '.regex_features|=.[0]' file.json

Выход:

{
  "name": "foo",
  "regex_features": [
    {
      "name": "jobname",
      "pattern": "[A-Z]+-[0-9]"
    },
    {
      "name": "project",
      "pattern": "[A-Z]{4}"
    }
  ]
}
0 голосов
/ 09 марта 2019

вот альтернативное решение, использующее jtc утилита unix:

bash $ <file1.json jtc -w'[0][0]' -w[0] -s
{
   "regex_features": [
      {
         "name": "jobname",
         "pattern": "[A-Z]+-[0-9]"
      },
      {
         "name": "project",
         "pattern": "[A-Z]{4}"
      },
      {
         "name": "summary",
         "pattern": "[a-z]+[a-z]+[a-z]{4}"
      },
      {
         "name": "description",
         "pattern": "[a-z]+[a-z]+[a-z]+[a-z]{4}"
      }
   ]
}
bash $ 

или другим способом: bash $ <file1.json jtc -w'[0]' -u'[0][0]'

...