【问题标题】:jq merge json array elementsjq合并json数组元素
【发布时间】:2018-12-11 17:23:15
【问题描述】:

我的数据在以下 json 数组中:

[{ "min": 1, "max": 2},
 { "min": 5, "max": 6}]

而且我需要采用以下格式:

1-2,5-6

我尝试了以下过滤器:

.[] | [ .min, .max|tostring ] | join("-")

我最终得到了:

"1-2"
"5-6"

我不知道如何从表达式中得到所需的“1-2”、“5-6”。 我是 jq 的新手,如果有任何提示,我将不胜感激。

【问题讨论】:

    标签: json jq


    【解决方案1】:
    jq -r 'map([.min, .max|tostring] | join("-")) | join(",")' input.json
    1-2,5-6
    

    如果您有足够新的 jq 版本,您可以拨打tostring

    如果最小/最大元素始终按该顺序排列并且没有其他键,您可能需要考虑:

    map([.[]] | join("-")) | join(",")
    

    【讨论】:

    • 感谢您的帮助,也感谢您@hek2mgl :) 现在可以完美运行了。
    【解决方案2】:

    也可以使用string interpolation,与join结合使用:

    jq -r 'map("\(.min)-\(.max)") | join(",")' file.json
    

    感谢peak 的创意。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-14
      相关资源
      最近更新 更多