web-dev-qa-db-ja.com

jq:プロパティによるグループとキー

次のようなオブジェクトのリストがあります。

[
  {
    "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"
  }
]

次に、コンポーネントごとにグループ化してキーを設定し、各コンポーネントにIPのリストを割り当てます。

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

私はそれを自分で考え出した。最初に_.component_でグループ化してから、各グループの最初のオブジェクトのコンポーネントによってインデックスが付けられた新しいIPリストを作成します。

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

28
replay