在JQ中使用CSV输出时,如何将数组组合成单个字符串值? [英] How to combine an array into a single string value when using CSV output in jq?

查看:20
本文介绍了在JQ中使用CSV输出时,如何将数组组合成单个字符串值?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有以下jq命令:

cat myFile.json | jq -r '.tickets[] | [.created_at, .id, .via.channel, .tags[]] | @csv'

并输出如下所示的行:

"2016-02-02T10:00:00Z",99999,"web","tag1","tag2","tag3","tag4"

我正在尝试join.tags[]数组,以便我可以获得:

"2016-02-19T13:25:55Z",99999,"web","tag1,tag2,tag3,tag4"

我尝试了一些方法,例如

cat myFile.json | jq -r '.tickets[] | [.created_at, .id, .via.channel, (.tags[] | join(","))] | @csv'

但它会显示以下错误:

jq: error (at <stdin>:0): Cannot iterate over string ("tag1...)

那么,我如何在上述命令中加入.tags[],以便获得单个字符串值(其中包含逗号分隔的标记值),而不是单独的字段?

推荐答案

您需要在tags列表上调用join(),而不是调用单个标签。尝试:

jq -r '.tickets[] | [.created_at, .id, .via.channel, (.tags | join(","))] | @csv'

这篇关于在JQ中使用CSV输出时,如何将数组组合成单个字符串值?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆