首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用jq运行JSON数组的计数器

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

Stack Overflow用户
提问于 2018-05-28 08:43:09
回答 2查看 1.1K关注 0票数 3

我正在使用jq-1.5。我想为JSON数组发出一个运行计数器(即索引)。

我的JSON是:

代码语言:javascript
复制
{"Actors": "Tom,Dick,Mary"}

我可以使用splits()将字符串拆分为数组

代码语言:javascript
复制
echo '{"Actors": "Tom,Dick,Mary"}' | jq --raw-output '. | ( .Actors | splits( "," ) )'
Tom
Dick
Mary

它如何为每个元素创建一个运行计数器?我尝试过使用--arg,但似乎无法使其递增。

我想要:

代码语言:javascript
复制
Tom    1
Dick   2
Mary   3
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-05-28 09:07:45

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

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

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

票数 4
EN

Stack Overflow用户

发布于 2018-05-28 10:15:58

可以用@tsv产生TSV输出。对于给定的输入,

代码语言:javascript
复制
jq -r '.Actors | split(",") | to_entries[] | [.value,.key] | @tsv'

产生:

代码语言:javascript
复制
Tom 0
Dick    1
Mary    2

如果您想要基于1的索引,请用上面的1 + .key替换.key

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50557803

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档