jq добавить результат группы захвата снаружи

Например,

Вход:

    {
       "id":"abc",
       "name": "name-middlenane-lastname-1"
    },

    {
        "id":"123",
        "name": "fname-flast-2"
    }

отклик:

    {
         "id":"abc",
         "name": "name-middlename-lastname-1",
         "newkey": "name-middlename-lastname"
    },

    {
          "id":"123",
          "name": "fname-flast-2",
          "newkey": "fname-flast"
    }

Поле имя в каждом объекте представляет собой строку с символами и числами, разделенными дефисом "-". Мне нужна полная строка от начала до начального числа. Я не хочу ничего, что там после числа. А затем добавьте поле new с ключом как newkey, а значение должно быть извлечено строкой без числа. Таким образом, вывод должен содержать как старые поля, так и новые.


person Naveen K Reddy    schedule 29.03.2018    source источник
comment
@peak есть предложения?   -  person Naveen K Reddy    schedule 29.03.2018
comment
почему "name": "name-middlename-lastname-1", остается неизменным в вашем выводе? Проверьте еще раз ожидаемый результат   -  person RomanPerekhrest    schedule 29.03.2018
comment
@naveenkreddy - укажите более точные требования, например. что если name это «123-ab456» или «a1b»?   -  person peak    schedule 29.03.2018
comment
@peak и РоманПерехрест обновились еще больше. Теперь ясно? пожалуйста посоветуй,   -  person Naveen K Reddy    schedule 29.03.2018
comment
Обновленная постановка задачи @peak & RomanPerehrest   -  person Naveen K Reddy    schedule 29.03.2018
comment
@RomanPerekhrest, не могли бы вы проверить -some-other" title="jq update json key является значением некоторого ключа, а значение является значением некоторого другого"> stackoverflow.com/questions/49577421/   -  person Naveen K Reddy    schedule 30.03.2018


Ответы (1)


jq решение:

Образец input.json:

[
  {
    "id": "abc",
    "name": "name-middlenane-lastname-1"
  },
  {
    "id": "123",
    "name": "fname-flast-2"
  }
]

jq 'map(. + (.name | capture("(?<newkey>.+)-[0-9]+")) )' input.json

Выход:

[
  {
    "id": "abc",
    "name": "name-middlenane-lastname-1",
    "newkey": "name-middlenane-lastname"
  },
  {
    "id": "123",
    "name": "fname-flast-2",
    "newkey": "fname-flast"
  }
]
person RomanPerekhrest    schedule 29.03.2018
comment
@NaveenKReddy, я могу легко обновить свое решение, если буду знать конкретные требования к ожидаемому результату. - person RomanPerekhrest; 29.03.2018
comment
Отлично сработало для моего примера. Спасибо РоманПерехрест за экономию моего времени! Я думаю, что @peak также показал бы аналогичную команду. Спасибо вам, ребята! - person Naveen K Reddy; 29.03.2018
comment
не могли бы вы проверить stackoverflow.com/questions/49647815/jq -группировать-и-приращение - person Naveen K Reddy; 04.04.2018
comment
Не могли бы вы проверить stackoverflow.com/questions/49800086/ - person Naveen K Reddy; 12.04.2018