Guía Completa del Comando jq en Linux: Manipula Datos JSON Fácilmente
El comando jq en Linux es una herramienta indispensable para quienes trabajan con datos JSON. Si eres administrador de sistemas, desarrollador o analista de datos, aprender a usar jq puede ahorrarte mucho tiempo y esfuerzo al trabajar con JSON en la línea de comandos. En esta guía completa, aprenderás qué es jq, cómo instalarlo y cómo usarlo para manipular y transformar datos JSON de manera eficiente.

¿Qué es el jq en Linux?
El jq es una poderosa herramienta de línea de comandos usada para procesar, consultar y transformar datos en formato JSON. Funciona de manera semelhante a herramientas como sed o awk, pero está específicamente diseñado para trabajar con JSON, lo que lo hace esencial para tareas que involucran APIs, automatización y procesamiento de grandes volúmenes de datos.
¿Por qué usar el jq en Linux?
Con el aumento del uso de JSON como formato de datos, especialmente en APIs y configuraciones de sistemas, jq se ha convertido en una herramienta esencial. Permite manipular datos JSON directamente en la terminal, sin necesidad de escribir scripts complejos en lenguajes de programación.
Cómo instalar el jq en Linux
La instalación de jq es sencilla y se puede hacer directamente a través del gestor de paquetes de tu distribución Linux. Veamos cómo:
Instalación en Ubuntu o Debian
sudo apt-get install jq
Instalación en Fedora
sudo dnf install jq
Instalación en CentOS/RHEL
sudo yum install jq
Comandos básicos del jq
Ahora que instalaste jq, vamos a explorar algunos comandos básicos para comenzar a usarlo.
1. Filtrando datos simples con jq
Considera el siguiente JSON:
{
"nome": "João",
"idade": 30,
"cidade": "São Paulo"
}
Para extraer solo el nombre:
echo '{"nome": "João", "idade": 30, "cidade": "São Paulo"}' | jq '.nome'
Salida:
"João"
2. Formateando JSON con jq
jq puede formatear JSON de manera legible:
echo '{"nome": "João", "idade": 30, "cidade": "São Paulo"}' | jq .
Salida:
{
"nome": "João",
"idade": 30,
"cidade": "São Paulo"
}
3. Filtrando arrays con jq
Para listar solo los nombres de un array de objetos JSON:
echo '[{"nome": "João", "idade": 30}, {"nome": "Maria", "idade": 25}, {"nome": "José", "idade": 40}]' | jq '.[].nome'
Salida:
"João"
"Maria"
"José"
4. Aplicando condiciones con jq
Filtra personas con edad mayor a 30:
echo '[{"nome": "João", "idade": 30}, {"nome": "Maria", "idade": 25}, {"nome": "José", "idade": 40}]' | jq '.[] | select(.idade > 30)'
Salida:
{
"nome": "José",
"idade": 40
}
5. Transformando estructuras JSON
Crea una lista de nombres separados por coma:
echo '[{"nome": "João", "idade": 30}, {"nome": "Maria", "idade": 25}, {"nome": "José", "idade": 40}]' | jq -r '.[].nome' | paste -sd ","
Salida:
João,Maria,José
6. Extrayendo múltiples campos simultáneamente
Si necesitas extraer más de un campo de un objeto JSON, puedes hacerlo fácilmente con jq:
echo '{"nome": "João", "idade": 30, "cidade": "São Paulo"}' | jq '{nome, cidade}'
Salida:
{
"nome": "João",
"cidade": "São Paulo"
}
7. Renombrando campos en JSON
Puedes renombrar campos al procesar JSON con jq. Aquí está cómo renombrar nome a full_name:
echo '{"nome": "João", "idade": 30}' | jq '{full_name: .nome, idade: .idade}'
Salida:
{
"full_name": "João",
"idade": 30
}
8. Trabajando con arrays y transformando datos
Supón que tienes un array de objetos y quieres extraer los valores de un campo específico y transformarlos en una nueva estructura:
echo '[{"produto": "A", "preco": 10}, {"produto": "B", "preco": 15}, {"produto": "C", "preco": 20}]' | jq '[.[] | {item: .produto, valor: .preco}]'
Salida:
[
{
"item": "A",
"valor": 10
},
{
"item": "B",
"valor": 15
},
{
"item": "C",
"valor": 20
}
]
9. Filtrando con condiciones complejas
Puedes crear filtros complejos usando operadores lógicos para extraer datos que cumplan múltiples condiciones:
echo '[{"nome": "João", "idade": 30, "cidade": "São Paulo"}, {"nome": "Maria", "idade": 25, "cidade": "Rio de Janeiro"}, {"nome": "José", "idade": 40, "cidade": "São Paulo"}]' | jq '.[] | select(.idade > 30 and .cidade == "São Paulo")'
Salida:
{
"nome": "José",
"idade": 40,
"cidade": "São Paulo"
}
10. Calculando estadísticas con jq
Si tienes un array de números, puedes usar jq para calcular la suma, promedio y otros valores agregados:
echo '[1, 2, 3, 4, 5]' | jq '{soma: add, media: (add / length), minimo: min, maximo: max}'
Salida:
{
"soma": 15,
"media": 3,
"minimo": 1,
"maximo": 5
}
11. Extrayendo y sumando valores de un campo específico
Si tienes un array de objetos y necesitas sumar los valores de un campo específico, como precios:
echo '[{"produto": "A", "preco": 10}, {"produto": "B", "preco": 15}, {"produto": "C", "preco": 20}]' | jq '[.[] | .preco] | add'
Salida:
45
12. Transformando JSON a CSV
Puedes convertir datos JSON a formato CSV usando jq, lo cual es útil para exportar datos a hojas de cálculo:
echo '[{"nome": "João", "idade": 30}, {"nome": "Maria", "idade": 25}, {"nome": "José", "idade": 40}]' | jq -r '.[] | [.nome, .idade] | @csv'
Salida:
"João",30
"Maria",25
"José",40
13. Modificando y actualizando valores
Puedes usar jq para modificar valores en un JSON, por ejemplo, aumentando la edad en 5 años:
echo '[{"nome": "João", "idade": 30}, {"nome": "Maria", "idade": 25}, {"nome": "José", "idade": 40}]' | jq 'map(.idade += 5)'
Salida:
[
{
"nome": "João",
"idade": 35
},
{
"nome": "Maria",
"idade": 30
},
{
"nome": "José",
"idade": 45
}
]
Usos Avanzados de jq en Linux
1. Extrayendo Datos de APIs con jq y curl
Combina jq con curl para manipular datos JSON retornados de APIs:
curl -s 'https://api.exemplo.com/dados' | jq '.resultados[] | {nome, valor}'
2. Sumando Valores con jq
Para sumar valores numéricos en un array:
echo '[1, 2, 3, 4, 5]' | jq 'add'
Salida:
15
Conclusión: Por qué el jq es Esencial para Profesionales de TI
El jq no es solo una herramienta poderosa; es esencial para cualquier profesional de TI que necesite manipular JSON regularmente. Ya sea para procesar respuestas de APIs, automatizar tareas, o analizar grandes volúmenes de datos, el jq ofrece una solución simple y eficiente.
Preguntas Frecuentes sobre el jq en Linux
1. ¿El jq funciona en todas las distribuciones Linux?
Sí, el jq es compatible con la mayoría de las distribuciones Linux.
2. ¿Puedo usar el jq para modificar archivos JSON directamente?
Sí, puedes redireccionar la salida del jq para modificar archivos JSON.
3. ¿El jq soporta otros lenguajes además de JSON?
No, el jq está específicamente diseñado para JSON.
Recursos Adicionales
Eso fue solo una pieza. El curso enseña el camino completo — desde tu primer comando hasta el día del examen.