Comando jq de Linux
Manual completo de comandos de Linux
jq es un procesador de JSON de línea de comandos ligero y potente. Te permite analizar, filtrar, transformar y formatear datos JSON de manera eficiente, especialmente adecuado para procesar datos JSON en scripts de shell.
Principales características de jq
- Procesamiento en streaming: puede procesar datos JSON de cualquier tamaño
- Amplia variedad de operadores: proporciona múltiples operadores para procesar estructuras de datos JSON
- Salida formateada: puede embellecer la salida JSON, mejorando la legibilidad
- Multiplataforma: se puede ejecutar en Linux, macOS y Windows (a través de WSL)
Instalación de jq
En la mayoría de las distribuciones de Linux, puedes instalar jq fácilmente mediante el gestor de paquetes:
Ejemplos
sudo apt-get install jq
# CentOS/RHEL
sudo yum install jq
# Fedora
sudo dnf install jq
# macOS (usando Homebrew)
brew install jq
Después de la instalación, puedes verificar si la instalación fue exitosa con el siguiente comando:
jq --version
Sintaxis básica
El formato básico del comando jq es el siguiente:
jq [options] [file...]
Opciones y parámetros comunes
| Opción | Descripción |
|---|---|
-c |
Salida compacta (sin embellecer) |
-r |
Salida de cadena original (sin comillas JSON) |
-s |
Lee todo el flujo de entrada en un arreglo |
-M |
Deshabilitar salida de color |
--arg |
Definir variable |
--slurp |
Lee múltiples objetos JSON en un arreglo |
Ejemplos de operaciones comunes
1. Análisis básico de JSON
Supongamos que tenemos un archivo llamadodata.jsoncuyo contenido es el siguiente:
Ejemplo
"name": "John Doe",
"age": 30,
"isActive": true,
"address": {
"street": "123 Main St",
"city": "New York"
},
"hobbies": ["reading", "hiking", "coding"]
}
Obtener todo el contenido (salida embellecida):
jq '.' data.json
Obtener un campo específico:
Ejemplo
# Salida: "John Doe"
Obtener campos anidados:
Ejemplo
# Salida: "New York"
2. Operaciones con arreglos
Obtener elementos de un arreglo:
Ejemplo
# Salida: "reading"
jq '.hobbies[1:3]' data.json
# Salida: ["hiking", "coding"]
Longitud del arreglo:
Ejemplo
# Salida: 3
3. Filtrado por condiciones
Filtrar elementos que cumplan una condición:
Ejemplo
jq '.[] | select(.age > 25)' users.json
4. Transformación de datos
Crear un nuevo objeto:
Ejemplo
# Salida: {"fullName": "John Doe", "city": "New York"}
Operaciones matemáticas:
Ejemplo
# Salida: 60
5. Procesar múltiples archivos
jq -s '.[0] + .[1]' file1.json file2.json
Uso avanzado
1. Usar variables
jq --arg new_city "Boston" '.address.city = $new_city' data.json
2. Procesar respuestas de API
curl -s https://api.example.com/users | jq '.[] | {name: .name, email: .email}'
3. Transformación compleja de datos
Ejemplo
jq -r '["Name", "Age"], (.[] | [.name, .age]) | @csv' users.json
4. Manejo de errores
Ejemplo
jq 'try .unknown_field catch "default value"' data.json
Escenarios de aplicación práctica
1. Análisis de registros (logs)
Ejemplo
cat app.log | jq 'select(.level == "error") | {time: .timestamp, message: .msg}'
2. Procesamiento de configuración
Ejemplo
jq '.config.timeout = 30' config.json > temp.json && mv temp.json config.json
3. Estadísticas de datos
Ejemplo
jq '[.[].age] | add / length' users.json
Preguntas frecuentes
1. ¿Cómo manejar archivos JSON grandes?
Para archivos JSON muy grandes, puedes usar procesamiento en streaming:
jq -n 'inputs | select(.value > 100)' hugefile.json
2. ¿Cómo conservar los caracteres especiales en JSON?
Usando-rcon la opción, los caracteres especiales se escapan. Si necesitas la salida tal cual, puedes:
jq -j '.' file.json
3. ¿Cómo fusionar múltiples archivos JSON?
jq -s 'add' file1.json file2.json
Resumen
jq es una herramienta poderosa para procesar datos JSON. Después de estudiar este artículo, deberías haber dominado:
- Los métodos básicos de instalación y uso de jq
- Operaciones comunes de consulta y filtrado de datos
- Técnicas avanzadas de transformación y procesamiento de datos
- Métodos de uso en escenarios de aplicación práctica
Para mejorar aún más tus habilidades con jq, puedes:
- Practicar el procesamiento de diversas estructuras de datos JSON complejas
- Intentar integrar jq en tus scripts de shell
- Consultar el manual oficial de jq para conocer más características avanzadas
¡Recuerda que dominar jq puede mejorar significativamente tu eficiencia al procesar datos JSON en la línea de comandos!
Otras extensiones