Jq filtry pro každodenní práci, seskupené podle úkolu: přístup k hodnotě, filtrování a výběr, práce s kolekcemi, transformace hodnot a řetězců, přeformování do nového objektu či pole, aktualizace cest na místě, větvení podle logiky a pokročilá redukce, plus přepínače příkazové řádky, které formují vstup a výstup. Každý řádek spojuje filtr s výsledkem, který dává.
jq je filtr: čte JSON ze stdin, spouští pipeline výrazů oddělených rourami a zapisuje JSON na stdout. Tečka je aktuální hodnota; všechno na ní stojí. Nejrychlejší způsob, jak se jq naučit, je poslat skutečná data přes recepty níže a sledovat výstup. Spouštějte je jako jq 'filtr' soubor.json nebo curl ... | jq 'filtr'.
Referenční tabulka · 65 položek
Recepty jqExplained
65 of 65 rows
Přístup
Celý vstup, hezky formátovaný.
Hodnota pod klíčem, nebo pod zanořenými klíči.
Hodnota pod klíčem, jehož název obsahuje speciální znaky.
První prvek pole (záporné číslo počítá od konce).
Každý prvek pole, nebo každá hodnota objektu, každá na vlastním řádku.
Hodnota pod klíčem, nebo null, bez chyby, když klíč chybí.
Filtrování a výběr
Vstup nezměněný, když je cond pravdivé, jinak nic.
Aplikuje expr na každý prvek pole a posbírá výsledky.
Seřazené názvy klíčů, nebo hodnoty, objektu jako pole.
Délka pole nebo řetězce, nebo počet klíčů objektu.
Pouze prvky s věkem větším než 18, jako jediné pole.
Kolekce
Pravda, když aspoň jeden prvek, nebo když každý prvek, je truthy nebo projde filtrem.
Pravda, když klíč k v objektu existuje; in spustí stejný test z pozice klíče.
První prvek, poslední, nebo jen prvních n výstupů f.
Nejmenší, nebo největší hodnota v poli.
Čísla od 0 do n, každé jako vlastní výstup.
Zanořená pole zploštělá do jediného plochého pole.
Pravda, když se x někde ve vstupu vyskytuje; inside obrací role.
Aplikuje f na každou hodnotu odspodu nahoru a pak znovu sestaví celý vstup.
Transformace
Pole jen s polem price každého prvku.
Součet pole čísel, nebo sloučení pole objektů.
Převede hodnotu na řetězec, nebo číselný řetězec na číslo.
Zakóduje vstup jako JSON řetězec nebo base64.
Řetězec převedený na malá písmena.
Řetězce
Řetězec s hodnotou expr vpletenou do textu.
Nahradí každou shodu vzoru, nebo jen první, hodnotou s.
Rozbije řetězec na pole podle oddělovače, nebo slepí pole do jednoho řetězce.
Otestuje řetězec proti vzoru, nebo vytáhne shody a pojmenované zachycené skupiny.
Odstraní předponu, nebo příponu, jen když je přítomna.
Pravda nebo nepravda: řetězec začíná, nebo končí, řetězcem s.
Řetězec převedený na velká písmena.
Pole zakódované jako řádek CSV, řádek TSV, nebo quotované shell argumenty.
Přeformování
Nový objekt jen s poli id a name ze vstupu.
Pole se jménem každé položky.
Pole objektů {key, value} vytvořené z objektu.
Objekt poskládaný z pole objektů {key, value}.
Prvky seskupené do podpolí podle jejich pole cat.
Seřadí podle pole, nebo ponechá jeden prvek na každou odlišnou hodnotu id.
Aktualizace a cesty
Aktualizuje hodnotu na klíči tak, že na ni spustí f.
Přepíše hodnotu na klíči hodnotou v.
Přičte n k hodnotě count na místě.
Přečte, zapíše nebo smaže hodnoty na cestách zadaných jako pole.
Řízení a logika
a, když je c pravdivé, jinak b, s elif pro další větve.
Spustí f, a když f selže, spustí místo něj g s chybovou zprávou.
Zastaví s chybou nesoucí msg, pokud ji nechytí try.
Žádný výstup; ta větev prostě z výsledků zmizí.
Kombinuje hodnoty pravda a nepravda, nebo jednu převrátí.
Pokročilé
Složí celé pole do jediného běžícího součtu.
Jako reduce, ale emituje stav po každém kroku, ne jen poslední.
Další vstup, nebo všechny zbývající vstupy, vtahované uprostřed filtru.
Hodnota jako JSON text, nebo JSON text parsovaný zpět na hodnotu.
Base64 text dekódovaný zpět na původní řetězec.
Přiřazení hluboko ve struktuře, chybějící úrovně se cestou vytvoří.
a, pokud není null ani false, jinak b (výchozí hodnota).
Vstup s jedním odstraněným klíčem.
Každá cesta ve vstupu jako pole klíčů, odshora dolů.
Proměnné a CLI
Definuje $name jako shell řetězec, použitelný uvnitř filtru.
Definuje $name z raw JSON, pro čísla, booleany, pole nebo objekty.
Definuje $name jako celý obsah JSON souboru.
Vytiskne výsledky typu řetězec syrově, bez uvozovek a escape sekvencí.
Vytiskne každý výstup kompaktně na jeden řádek, bez odsazení.
Spustí filtr jednou nad null, aby postavil výstup z ničeho.
Přečte celý vstup do jednoho pole dřív, než filtr poběží.
Nastaví exit kód podle posledního výstupu, aby shell skripty mohly výsledek testovat.
Hodnota proměnné prostředí, přečtená uvnitř filtru.