Как дублировать вход в выходы с JQ? - PullRequest
0 голосов
/ 26 февраля 2020

Я пытаюсь адаптировать следующий фрагмент:

echo '{"a":{"value":"b"}, "c":{"value":"d"}}' \
    | jq -r '. as $in | keys[] | [$in[.].value | tostring + " 1"] | @tsv'
b 1
d 1

для вывода:

b 1
b 2
d 1
d 2

1 Ответ

2 голосов
/ 26 февраля 2020

Следующая адаптация дает желаемый результат:

echo '{"a":{"value":"b"}, "c":{"value":"d"}}' |
  jq -r '
    def addindex(start;lessthan): 
      range(start;lessthan) as $i | "\(.) \($i)";
    . as $in
    | keys[]
    | $in[.].value
    | addindex(1;3)'

Обратите внимание, что keys выдает имена клавиш после их сортировки, тогда как keys_unsorted сохраняет порядок.

...