jq在一行中显示节点

时间:2017-08-20 21:13:25

标签: json bash jq

所以我有这个:

jq -r '.letters[0].secondary_letters[0] | "\(.name)"' letters.json

输出:

a
aa

我希望他们成为:a,aa

json看起来像:

  "secondary_letters": [
    {
      "id": 1,
      "name": "a"
    },
    {
      "id": 2,
      "name": "aa"
    }

可能还有更多,因此jq命令应该能够提取所需的子节点数。

可以吗?

3 个答案:

答案 0 :(得分:2)

假设输入已被更正,因此它是有效的JSON,

jq -r '.secondary_letters | map(.name) | join(", ")'

产生

a, aa

同样的过滤器也满足一般性要求。

答案 1 :(得分:0)

你想这样:?

jq -r '.secondary_letters | map(.name)' letters.json
==> ["a" , "aa"]

如果您需要更多属性,.i.e:id:

jq -r '.secondary_letters | map(.name, .id)' letters.json
==> ["a" , 1, "aa", 2]

答案 2 :(得分:0)

简单 jq 方法:

jq -r '[.secondary_letters[].name] | join(", ")' letters.json

输出:

a, aa