Los filtros de jq que se usan a diario, agrupados por tarea: acceder a un valor, filtrar y seleccionar, trabajar con colecciones, transformar valores y cadenas, reestructurar en un objeto o array nuevo, actualizar rutas en el sitio, ramificar según lógica y manejar la reducción avanzada, además de los indicadores de línea de comandos que moldean la entrada y la salida. Cada fila empareja el filtro con el resultado que produce.
jq es un filtro: lee JSON por stdin, ejecuta una tubería de expresiones separadas por barras verticales y escribe JSON en stdout. El punto es el valor actual; todo se construye sobre él. La forma más rápida de aprender es enviar datos reales por las recetas de abajo y observar la salida. Ejecútalas como jq 'filtro' archivo.json o curl ... | jq 'filtro'.
Tabla de referencia · 65 entradas
Recetas de jqExplained
65 of 65 rows
Acceso
Toda la entrada, impresa con formato.
El valor de una clave, o de claves anidadas.
El valor de una clave cuyo nombre tiene caracteres especiales.
El primer elemento de un array (el negativo cuenta desde el final).
Cada elemento de un array, o cada valor de un objeto, en su propia línea.
El valor de la clave, o null, sin error cuando la clave no existe.
Filtrar y seleccionar
La entrada sin cambios si cond es verdadera; si no, nada.
Aplica expr a cada elemento de un array y recopila los resultados.
Los nombres de claves ordenados, o los valores, de un objeto como array.
La longitud de un array o cadena, o la cantidad de claves de un objeto.
Solo los elementos cuya edad es mayor que 18, en un único array.
Colecciones
Verdadero si al menos un elemento, o si todos, es verdadero o pasa un filtro.
Verdadero si la clave k existe en el objeto; in ejecuta la misma prueba desde el lado de la clave.
El primer elemento, el último, o solo las primeras n salidas de f.
El valor más pequeño, o más grande, de un array.
Los números de 0 hasta n, cada uno como salida propia.
Arrays anidados colapsados en un único array plano.
Verdadero si x aparece en alguna parte de la entrada; inside invierte los papeles.
Aplica f a cada valor de abajo hacia arriba y luego reconstruye toda la entrada.
Transformar
Un array con solo el campo price de cada elemento.
La suma de un array de números, o la fusión de un array de objetos.
Convierte un valor en cadena, o una cadena numérica en número.
Codifica la entrada como cadena JSON o base64.
Una cadena en minúsculas.
Cadenas
Una cadena con el valor de expr insertado en el texto.
Reemplaza todas las coincidencias del patrón, o solo la primera, con s.
Divide una cadena en un array por un separador, o une un array en una sola cadena.
Prueba una cadena contra un patrón, o extrae las coincidencias y las capturas con nombre.
Quita un prefijo, o un sufijo, solo cuando está presente.
Verdadero o falso: la cadena empieza, o termina, con s.
Una cadena en mayúsculas.
Un array codificado como fila CSV, fila TSV o argumentos de shell entrecomillados.
Reestructurar
Un objeto nuevo con solo los campos id y name de la entrada.
Un array con el nombre de cada elemento.
Un array de objetos {key, value} a partir de un objeto.
Un objeto construido a partir de un array de objetos {key, value}.
Elementos agrupados en subarrays por su campo cat.
Ordena por un campo, o conserva un elemento por cada id distinto.
Actualizar y rutas
Actualiza el valor de la clave ejecutando f sobre él.
Sobrescribe el valor de la clave con v.
Suma n al valor de count, en el sitio.
Lee, escribe o borra valores en rutas dadas como arrays.
Control y lógica
a cuando c es verdadera, b en caso contrario, con elif para más ramas.
Ejecuta f, y ejecuta g con el mensaje de error en su lugar cuando f falla.
Detiene la ejecución con un error que lleva msg, salvo que un try lo capture.
Ninguna salida; esa rama simplemente desaparece de los resultados.
Combina valores verdaderos y falsos, o invierte uno.
Avanzado
Plega todo el array en un único total acumulado.
Como reduce, pero emite el estado después de cada paso, no solo el último.
La siguiente entrada, o todas las restantes, incorporadas a mitad del filtro.
Un valor como texto JSON, o texto JSON convertido de nuevo en valor.
Texto base64 decodificado de nuevo en la cadena original.
Asignación profunda en la estructura, creando los niveles que falten en el camino.
a si no es null ni false; si no, b (un valor por defecto).
La entrada con una clave eliminada.
Cada ruta de la entrada como un array de claves, de arriba abajo.
Variables y CLI
Define $name como cadena del shell, utilizable dentro del filtro.
Define $name desde JSON en bruto, para números, booleanos, arrays u objetos.
Define $name como todo el contenido de un archivo JSON.
Imprime los resultados de tipo cadena en crudo, sin comillas ni escapes.
Imprime cada resultado compacto en una línea, sin sangría.
Ejecuta el filtro una vez sobre null, para construir salida desde cero.
Lee toda la entrada en un único array antes de ejecutar el filtro.
Fija el código de salida según la última salida, para que los scripts del shell puedan probar el resultado.
El valor de una variable de entorno, leído dentro del filtro.