noqqe » blog | sammelsurium | photos | projects | about

jq

2020-05-29 @ jq, json, Software

jq ist sozusagen das sed für JSON.

Generelle Syntax / Felder anzeigen

Wenn das Feld ausgelesen werden soll def

[{
    "id": 123,
    "name": "John",
    "aux": [{
        "abc": "random",
        "def": "I want this"
    }],
    "blah": 23.11
}]
jq '.[].aux[].def' file.json

Dabei sind Arrays [] und Attribute davon .aux bzw. .def

Elemente in Array filtern

{
  "prefixes": [
    {
      "ip_prefix": "35.180.0.0/16",
      "region": "eu-west-3",
      "service": "AMAZON",
      "network_border_group": "eu-west-3"
    },
    {
      "ip_prefix": "52.94.76.0/22",
      "region": "us-west-2",
      "service": "AMAZON",
      "network_border_group": "us-west-2"
    }
  ]
}

Ich kann also nach allen Feldern in denen “region” “eu-central-1” ist, suchen in dem ich den select Command benuzte

jq '.prefixes[] | select(.region == "eu-central-1")' f

Multiple Filter

Filter (wie select) können mittelns | gechained werden.

jq '.prefixes[] | select(.region == "eu-central-1") | select(.ip_prefix | startswith("3."))' f`

Hier verbinde ich 2 Suchkritierien (json selbes wie oben)