Skip to content

Ricette jq spiegati

I filtri jq usati ogni giorno, raggruppati per attività: raggiungere un valore, filtrare e selezionare, lavorare con le collezioni, trasformare valori e stringhe, rimodellare in un nuovo oggetto o array, aggiornare percorsi sul posto, ramificare con la logica e gestire la riduzione avanzata, più i flag della riga di comando che modellano input e output. Ogni riga abbina il filtro al risultato che produce.

jq è un filtro: legge JSON da stdin, esegue una pipeline di espressioni separate da pipe e scrive JSON su stdout. Il punto è il valore corrente; tutto si costruisce su di esso. Il modo più rapido per imparare è inviare dati reali attraverso le ricette qui sotto e osservare l'output. Eseguirle come jq 'filtro' file.json oppure curl ... | jq 'filtro'.

Tabella di riferimento · 65 voci
65 of 65 rows
Accesso
Tutto l'input, in stampa formattata.
Il valore di una chiave, o di chiavi annidate.
Il valore di una chiave il cui nome contiene caratteri speciali.
Il primo elemento di un array (i negativi contano dalla fine).
Ogni elemento di un array, o ogni valore di un oggetto, su una riga propria.
Il valore della chiave, oppure null, senza errore quando la chiave manca.
Filtro e selezione
L'input invariato quando la condizione è vera, altrimenti nulla.
Applica expr a ogni elemento di un array e raccoglie i risultati.
I nomi delle chiavi in ordine, oppure i valori, di un oggetto come array.
La lunghezza di un array o stringa, o il numero di chiavi di un oggetto.
Solo gli elementi con age maggiore di 18, come unico array.
Collezioni
Vero quando almeno un elemento, o quando tutti, è truthy o supera un filtro.
Vero quando la chiave k esiste nell'oggetto; in esegue lo stesso test dal lato della chiave.
Il primo elemento, l'ultimo, o solo i primi n output di f.
Il valore più piccolo, o più grande, in un array.
I numeri da 0 fino a n, ciascuno come output proprio.
Array annidati collassati in un unico array piatto.
Vero quando x ricorre da qualche parte nell'input; inside inverte i ruoli.
Applica f a ogni valore dal basso verso l'alto, poi ricostruisce tutto l'input.
Trasformazione
Un array del solo campo price di ogni elemento.
La somma di un array di numeri, o l'unione di un array di oggetti.
Converte un valore in stringa, o una stringa numerica in numero.
Codifica l'input come stringa JSON o base64.
Una stringa in minuscolo.
Stringhe
Una stringa con il valore di expr inserito nel testo.
Sostituisce ogni corrispondenza del pattern, o solo la prima, con s.
Spezza una stringa in array su un separatore, o incolla un array in un'unica stringa.
Verifica una stringa contro un pattern, o estrae le corrispondenze e i capture con nome.
Rimuove un prefisso, o un suffisso, solo quando è presente.
Vero o falso: la stringa inizia, o finisce, con s.
Una stringa in maiuscolo.
Un array codificato come riga CSV, riga TSV o argomenti shell tra virgolette.
Rimodellamento
Un nuovo oggetto con soli i campi id e name dell'input.
Un array del name di ogni elemento.
Un array di oggetti {key, value} ricavato da un oggetto.
Un oggetto costruito da un array di oggetti {key, value}.
Elementi raggruppati in sottoarray secondo il campo cat.
Ordina per un campo, o tiene un elemento per ogni id distinto.
Aggiornamento e percorsi
Aggiorna il valore alla chiave eseguendo f su di esso.
Sovrascrive il valore alla chiave con v.
Aggiunge n al valore di count, sul posto.
Legge, scrive o elimina valori in percorsi dati come array.
Controllo e logica
a quando c è vera, b altrimenti, con elif per più rami.
Esegue f, ed esegue g con il messaggio d'errore quando f fallisce.
Si ferma con un errore che porta msg, a meno che un try lo catturi.
Nessun output; quel ramo svanisce dai risultati.
Combina valori veri e falsi, o ne inverte uno.
Avanzato
Piega l'intero array in un unico totale progressivo.
Come reduce, ma emette lo stato dopo ogni passo, non solo l'ultimo.
L'input successivo, o tutti gli input rimanenti, richiamati a metà filtro.
Un valore come testo JSON, o testo JSON ricondotto a valore.
Testo base64 decodificato nella stringa originale.
Assegnazione in profondità nella struttura, creando i livelli mancanti lungo il percorso.
a se non è null o false, altrimenti b (un valore predefinito).
L'input con una chiave rimossa.
Ogni percorso nell'input come array di chiavi, dall'alto verso il basso.
Variabili e CLI
Definisce $name come stringa shell, utilizzabile dentro il filtro.
Definisce $name da JSON grezzo, per numeri, booleani, array o oggetti.
Definisce $name come l'intero contenuto di un file JSON.
Stampa i risultati stringa grezzi, senza virgolette né escape.
Stampa ogni risultato compatto su una riga, senza indentazione.
Esegue il filtro una volta su null, per costruire output dal nulla.
Legge tutto l'input in un unico array prima che il filtro esegua.
Imposta il codice d'uscita dall'ultimo output, così gli script shell possono testare il risultato.
Il valore di una variabile d'ambiente, letto dentro il filtro.