fbpx Comando jq en Linux: Filtrar y Formatear JSON | Certificação Linux

Guía Completa del Comando jq en Linux: Manipula Datos JSON Fácilmente

📅 13/08/2024 ⏱ 6 min ✍️ Uira Ribeiro
LinuxShellAutomatización
Guía Completa del Comando jq en Linux: Manipula Datos JSON Fácilmente
Exam Pass App — mais de 7.000 questões LPI, offline, em 5 idiomas, disponível no Android e na App Store
Disponible en
Google Play
Disponible en
App Store

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


Uira Ribeiro

Prof. Uirá Ribeiro

Chair do Board do Linux Professional Institute

Después de años viendo profesionales perder horas en tareas simples por no conocer las herramientas correctas de Linux, decidí enseñar.
Hoy soy autor de la mayoría de los Materiales de Aprendizaje oficiales de la LPI y mentor de más de 14,000 alumnos certificados.

Conoce mi historia completa →

Eso fue solo una pieza. El curso enseña el camino completo — desde tu primer comando hasta el día del examen.

Certificação Linux — a plataforma líder em certificações Linux no Brasil
WhatsApp