【问题标题】:How to combine an array into a single string value when using CSV output in jq?在jq中使用CSV输出时如何将数组组合成单个字符串值?
【发布时间】:2017-12-23 05:37:33
【问题描述】:

我有以下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[],而不是单独的字段,而是得到一个字符串值(其中包含逗号分隔的标签值)?

【问题讨论】:

    标签: json csv jq


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-06-25
      • 2020-07-24
      • 2018-09-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多