Запуск счетчика для массива JSON с использованием jq - PullRequest
0 голосов
/ 28 мая 2018

Я использую jq-1.5.Я хотел бы выдать текущий счетчик (т. Е. Индекс) для массива JSON.

Мой JSON:

{"Actors": "Tom,Dick,Mary"}

Я могу разбить строку на массив, используя splits():

echo '{"Actors": "Tom,Dick,Mary"}' | jq --raw-output '. | ( .Actors | splits( "," ) )'
Tom
Dick
Mary

Как создать счетчик хода для каждого элемента?Я пытался использовать --arg, но не могу увеличить его.

Я хотел бы получить:

Tom    1
Dick   2
Mary   3

Ответы [ 2 ]

0 голосов
/ 28 мая 2018

Можно выдавать TSV с @tsv.При заданном входном сигнале

jq -r '.Actors | split(",") | to_entries[] | [.value,.key] | @tsv'

создает:

Tom 0
Dick    1
Mary    2

Если вы хотите индексировать на основе 1, замените .key на 1 + .key выше.

0 голосов
/ 28 мая 2018

Вы можете использовать to_entries.Попробуйте это:

echo '{"Actors": "Tom,Dick,Mary"}' | jq -r '[.Actors | splits(",")] | to_entries | map("\(.value) \(1 + .key)") | .[]' | column -t -o"   "

Я добавил | column -t -o" ", я не знаю, как форматировать столбцы с помощью jq.

...