Comando jq de Linux

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

# Ubuntu/Debian
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

jq '.name' data.json
# Salida: "John Doe"

Obtener campos anidados:

Ejemplo

jq '.address.city' data.json
# Salida: "New York"

2. Operaciones con arreglos

Obtener elementos de un arreglo:

Ejemplo

jq '.hobbies[0]' data.json
# Salida: "reading"

jq '.hobbies[1:3]' data.json
# Salida: ["hiking", "coding"]

Longitud del arreglo:

Ejemplo

jq '.hobbies | length' data.json
# Salida: 3

3. Filtrado por condiciones

Filtrar elementos que cumplan una condición:

Ejemplo

# Supongamos que users.json contiene un arreglo de usuarios
jq '.[] | select(.age > 25)' users.json

4. Transformación de datos

Crear un nuevo objeto:

Ejemplo

jq '{fullName: .name, city: .address.city}' data.json
# Salida: {"fullName": "John Doe", "city": "New York"}

Operaciones matemáticas:

Ejemplo

jq '.age * 2' data.json
# 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

# Convierte un arreglo de objetos a formato CSV
jq -r '["Name", "Age"], (.[] | [.name, .age]) | @csv' users.json

4. Manejo de errores

Ejemplo

# Usa try-catch para manejar campos que podrían no existir
jq 'try .unknown_field catch "default value"' data.json

Escenarios de aplicación práctica

1. Análisis de registros (logs)

Ejemplo

# Analizar archivos de registro en formato JSON
cat app.log | jq 'select(.level == "error") | {time: .timestamp, message: .msg}'

2. Procesamiento de configuración

Ejemplo

# Modificar un valor en el archivo de configuración
jq '.config.timeout = 30' config.json > temp.json && mv temp.json config.json

3. Estadísticas de datos

Ejemplo

# Calcular la edad promedio de los usuarios
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:

  1. Los métodos básicos de instalación y uso de jq
  2. Operaciones comunes de consulta y filtrado de datos
  3. Técnicas avanzadas de transformación y procesamiento de datos
  4. 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!


Linux 命令大全Manual completo de comandos de Linux

Otras extensiones