Volver a la página principal
miércoles 17 julio 2024
119

Cómo utilizar la herramienta jq en Linux

Instalación de jq

En Debian/Ubuntu

sudo apt-get update
sudo apt-get install jq

En Fedora

sudo dnf install jq

En macOS (usando Homebrew)

brew install jq

Conceptos Básicos de jq

Sintaxis Básica

La sintaxis básica de jq implica pasar un filtro al comando jq seguido de los datos JSON a procesar. Por ejemplo:

echo '{"name": "Juan", "age": 30}' | jq '.'

Este comando simplemente formatea y muestra el JSON de manera legible.

Operaciones Comunes

Extracción de Datos

Para extraer datos específicos de un JSON, se utilizan los filtros. Por ejemplo, para obtener el valor del campo "name":

echo '{"name": "Juan", "age": 30}' | jq '.name'

Acceso a Objetos y Arrays

Para acceder a elementos dentro de objetos y arrays:

echo '{"person": {"name": "Juan", "age": 30}}' | jq '.person.name'

Para acceder a un elemento en un array:

echo '{"people": [{"name": "Juan"}, {"name": "Maria"}]}' | jq '.people[1].name'

Filtrado de Arrays

Puedes filtrar arrays basándote en condiciones específicas:

echo '{"people": [{"name": "Juan", "age": 30}, {"name": "Maria", "age": 25}]}' | jq '.people[] | select(.age > 28)'

Transformación de Datos

También puedes transformar datos, por ejemplo, renombrar claves o modificar valores:

echo '{"name": "Juan", "age": 30}' | jq '{fullName: .name, yearsOld: .age}'

Funciones Avanzadas

Map y Reduce

jq proporciona funciones de mapeo y reducción para manipular arrays:

echo '[1, 2, 3, 4]' | jq 'map(. * 2)'

Esto duplica cada número en el array.

Para sumar los valores de un array:

echo '[1, 2, 3, 4]' | jq 'reduce .[] as $num (0; . + $num)'

Uso de Funciones Predefinidas

jq tiene varias funciones predefinidas, como length, keys, y has:

echo '{"name": "Juan", "age": 30}' | jq 'length' # Cuenta el número de claves
echo '{"name": "Juan", "age": 30}' | jq 'keys' # Muestra las claves del objeto
echo '{"name": "Juan", "age": 30}' | jq 'has("name")' # Verifica si el objeto tiene la clave "name"

Ejemplos Prácticos

Parsear Datos de una API

Imagina que obtienes datos JSON desde una API y quieres extraer información específica:

curl -s 'https://api.example.com/data' | jq '.results[] | {name: .name, age: .age}'

Modificar JSON en Archivos

Si tienes un archivo JSON y necesitas modificar su contenido, puedes hacerlo directamente con jq:

jq '.age = 31' person.json > updated_person.json

Consejos y Trucos

Depuración de JSON

Para depurar y formatear JSON:

jq '.' data.json

Combinación de Comandos

Puedes combinar múltiples comandos jq para operaciones más complejas:

cat data.json | jq '.people | map(select(.age > 20)) | map({name: .name, age: .age})'

Conclusión

jq es una herramienta esencial para cualquier administrador de sistemas o desarrollador que trabaje con datos JSON en Linux. Su capacidad para extraer, transformar y manipular datos JSON de manera eficiente la convierte en una adición valiosa al conjunto de herramientas de línea de comandos. Con los ejemplos y conceptos básicos proporcionados en este artículo, deberías estar bien encaminado para utilizar jq de manera efectiva en tus proyectos diarios.

Compartir:
Creado por:
Author photo

Jorge García

Fullstack developer