【问题标题】:Concatenate name and number field from JSON structure in jqjq中JSON结构的连接名称和数字字段
【发布时间】:2020-03-30 16:15:23
【问题描述】:
{
   "name": "ford",
   "availableVersions": [
      {
         "version": 111,
         "count": 3
      },
      {
         "version": 122,
         "count": 2
      }
                         ]
}
{
   "name": "bmw",
   "availableVersions": [
     {
         "version": 133,
         "count": 1
     },
     {
      "version": 144,
      "count": 3
     }
                        ]
}

我现在有这个 demo.json 文件 if (count == 3) 我想将名称与版本连接起来。

所以我的输出应该是[ford-111, BMW-144]。我正在使用 jq 的 json 解析。

我试过这个命令

cat demo2| jq '  select(.availableVersions[].count == 3) | .name + ": " + (.availableVersions[].version|tostring)'

输出:

"ford: 111"
"ford: 122"
"bmw: 133"
"bmw: 144"

预期输出:

"ford: 111"
"bmw: 144"

谁能帮我解决这个问题?

【问题讨论】:

  • 非常感谢您的快速回复。我试过这个命令 COMMAND = cat demo | jq ' 选择(.availableVersions[].count == 3) | .name + ":" + (.availableVersions[].version|tostring)' OUTPUT = "ford: 111" "ford: 122" "bmw: 133" "bmw: 144" 预期输出 = "ford: 111" "bmw : 144"

标签: json shell parsing concatenation jq


【解决方案1】:

你几乎完成了,你只需要将选择移到另一边。

.name + ": " + (.availableVersions[]|select(.count == 3).version|tostring)

虽然我会改为使用字符串插值来编写它:

"\(.name): \(.availableVersions[]|select(.count == 3).version)"

【讨论】:

    猜你喜欢
    • 2020-07-16
    • 2019-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-09
    • 1970-01-01
    • 2017-04-13
    • 1970-01-01
    相关资源
    最近更新 更多