Как я могу сопоставить поля с подстановочными знаками, используя JQ? - PullRequest
0 голосов
/ 11 декабря 2018

У меня есть объект JSON следующей формы:

{
  "Task11c-0-20181209-12:59:30-65611" : {
    "attributes" : {
      "configname" : "Task11c",
      "datetime" : "20181209-12:59:30",
      "experiment" : "Task11c",
      "inifile" : "lab1.ini",
      "iterationvars" : "",
      "iterationvarsf" : "",
      "measurement" : "",
      "network" : "Manhattan1_1C",
      "processid" : "65611",
      "repetition" : "0",
      "replication" : "#0",
      "resultdir" : "results",
      "runnumber" : "0",
      "seedset" : "0"
    },
    ......
  },
  ......
  "Task11b-12-20181209-13:03:17-65612" : {
    ....
    .... 
  },
  .......
}

Я сообщил только о первой части, но в целом у меня есть много других подобъектов, которые соответствуют строке, такой как Task11c-0-20181209-12:59:30-65611.Все они имеют общее начальное слово Task.Я хочу извлечь processid из каждого подобъекта.Я пытаюсь использовать подстановочный знак, как в bash, но это кажется невозможным.

Я также читал о функции match () , но она работает со строками, а не с jsonобъекты.

Спасибо за поддержку.

1 Ответ

0 голосов
/ 11 декабря 2018

Фильтруйте ключи, которые начинаются с Test и получают только атрибут по вашему выбору, используя выражение select()

jq 'to_entries[] | select(.key|startswith("Task")).value.attributes.processid' json
...