web-dev-qa-db-fra.com

jq: groupe et clé par propriété

J'ai une liste d'objets qui ressemblent à ceci:

[
  {
    "ip": "1.1.1.1",
    "component": "name1"
  },
  {
    "ip": "1.1.1.2",
    "component": "name1"
  },
  {
    "ip": "1.1.1.3",
    "component": "name2"
  },
  {
    "ip": "1.1.1.4",
    "component": "name2"
  }
]

Maintenant, je voudrais regrouper et saisir cela par composant et attribuer une liste d'ips à chacun des composants:

{
  "name1": [
    "1.1.1.1",
    "1.1.1.2"
  ]
},{
  "name2": [
    "1.1.1.3",
    "1.1.1.4"
  ]
}
17
replay

Je l'ai compris moi-même. Je commence par regrouper par .component, Puis je crée simplement de nouvelles listes d'ips qui sont indexées par le composant du premier objet de chaque groupe:

jq ' group_by(.component)[] | {(.[0].component): [.[] | .ip]}'

28
replay