使用 jq 的 JSON 数组运行计数器



我正在使用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

您可以使用to_entries.试试这个:

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

我添加了| column -t -o" ",我不知道如何使用jq格式化列。

可以使用@tsv生成 TSV 输出。 在给定的输入下,

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

生产:

Tom 0
Dick    1
Mary    2

如果需要基于 1 的索引,请将.key替换为上面的1 + .key

最新更新