Analizar JSON en Bash

Aashish Sunuwar 30 enero 2023
  1. Utilice jq (herramienta de procesamiento JSON de línea de comandos ligera y flexible) para analizar JSON en Bash
  2. Use grep para analizar JSON en Bash
  3. Use python3 para analizar JSON
Analizar JSON en Bash

Aprenderemos a analizar los datos JSON en bash usando diferentes técnicas.

Usaremos un servidor JSON falso para los ejemplos.

Servidor JSON falso - https://jsonplaceholder.typicode.com/posts

Utilice jq (herramienta de procesamiento JSON de línea de comandos ligera y flexible) para analizar JSON en Bash

jq es una pequeña solución multiplataforma para administrar datos JSON de una manera más corta, simple y sin esfuerzo.

Puede descargar jq desde aquí.

Obtenga datos JSON formateados más bonitos usando jq

El comando jq . embellece los datos json.

curl "https://jsonplaceholder.typicode.com/posts" | jq .

Producción :

[
    {
      "userId": 1,
      "id": 1,
      "title": "delectus aut autem",
      "completed": false
    },
    {
      "userId": 1,
      "id": 2,
      "title": "quis ut nam facilis et officia qui",
      "completed": false
    },
    {
      "userId": 1,
      "id": 3,
      "title": "fugiat veniam minus",
      "completed": false
    }
    ... // remaining list of data
]

Obtener valores de campos específicos de JSON

Podemos obtener valores de cualquier campo específico del array de datos JSON usando jq.[].field_name.

curl "https://jsonplaceholder.typicode.com/posts" | jq '.[].id'

Producción :

1
2
3
...

Obtenga el título del primer elemento de JSON

curl "https://jsonplaceholder.typicode.com/posts" | jq '.[0].title'

Producción :

"delectus aut autem"

Use grep para analizar JSON en Bash

El comando grep también se puede usar para analizar datos JSON.

Ejemplo de archivo JSON:

[
  {
    "id": 1,
    "name": "Andres Gustov",
    "email": "andddy7@gmail.com"
  },
  {
    "id": 2,
    "name": "Anthony Marklov",
    "email": "antman33@gmail.com"
  }
]

Guión de ejemplo:

grep -o '"email": "[^"]*' examplejsonfile.json | grep -o '[^"]*$'

Usamos la opción -o para seleccionar solo líneas que coincidan con el patrón dado. Luego, especificamos el patrón '"email": "[^"]*', lo que significa que queremos todos los valores de la clave email. A continuación, pasamos el archivo JSON para buscar el patrón. Finalmente, canalizamos el resultado con otro comando grep -o para eliminar todo excepto el valor.

Producción :

andddy7@gmail.com
antman33@gmail.com

Use python3 para analizar JSON

También podemos usar el módulo json de python para manejar operaciones JSON.

curl -s 'https://jsonplaceholder.typicode.com/posts' | \
    python3 -c "import sys, json; print(json.load(sys.stdin))"

Obtener valor de campo específico

curl "https://jsonplaceholder.typicode.com/posts" | \
    python3 -c "import sys, json; data=json.load(sys.stdin); print([d['id'] for d in data])"

Producción :

1
2
3
...

Obtener el título del primer elemento

curl "https://jsonplaceholder.typicode.com/posts" | \
    python3 -c "import sys, json; print(json.load(sys.stdin)[0]['title'])"

Producción :

"delectus aut autem"

Artículo relacionado - Bash Json