2016-12-06 5 views
1

У меня есть два jj-файла. Первый 1.jsonПолучить поле из другого json используя jq

{ 
    "id": "107709375", 
    "type": "page", 
    "title": "SomeTitle", 
    "space": { 
     "key": "BUSINT" 
    }, 
    "version": { 
     "number": 62 
    } 
} 

И второй один logg.json:

{ 
    "id": "228204270", 
    "type": "page", 
    "status": "current", 
    "title": "test-test", 
    "version": { 
     "when": "2016-11-23T16:54:18.313+07:00", 
     "number": 17, 
     "minorEdit": false 
    }, 
    "extensions": { 
     "position": "none" 
    } 
} 

Могу ли я вставить version.number из logg.json в version.number 1.json с помощью JQ? Мне нужно что-то подобное (это совершенно неправильно):

jq-win64 ".version.number 1.json" = ".version.number +1" logg.json 

ответ

1

Read logg.json как файл аргумента. Затем вы можете получить доступ к своим значениям, чтобы внести изменения в другие.

$ jq --argfile logg logg.json '.version.number = $logg.version.number + 1' 1.json 

Конечно, вам нужно использовать двойные кавычки для работы в командной строке Windows.

> jq --argfile logg logg.json ".version.number = $logg.version.number + 1" 1.json 

Хотя документация говорит использовать --slurpfile вместо этого, у нас есть только один объект в файле, поэтому было бы совершенно уместно использовать --argfile вместо этого.

+0

Jeff, это работает! Спасибо! –

+0

Возможно, не рекомендуется использовать устаревший параметр '--argfile', поскольку устаревшие функции, как правило, удаляются в будущих версиях. К сожалению, альтернатива '--slurpfile' не работает точно так же. –

Смежные вопросы