Filtrele jq folosite zi de zi, grupate pe sarcini: accesarea unei valori, filtrarea și selecția, lucrul cu colecțiile, transformarea valorilor și a șirurilor, remodelarea într-un obiect sau un vector nou, actualizarea căilor în loc, ramificarea pe logică și reducerea avansată, plus flagurile din linia de comandă care modelează intrarea și ieșirea. Fiecare rând asociază filtrul cu rezultatul pe care îl produce.
jq este un filtru: citește JSON din stdin, rulează un pipeline de expresii separate prin pipe și scrie JSON la stdout. Punctul este valoarea curentă; totul se construiește pe el. Cea mai rapidă cale de a învăța este să trimiți date reale prin rețetele de mai jos și să urmărești rezultatul. Rulează-le ca jq 'filtru' fisier.json sau curl ... | jq 'filtru'.
Tabel de referință · 65 intrări
Rețete jqExplained
65 of 65 rows
Acces
Toată intrarea, formatată frumos.
Valoarea de la o cheie sau chei imbricate.
Valoarea de la o cheie al cărei nume conține caractere speciale.
Primul element al unui vector (un număr negativ numără de la sfârșit).
Fiecare element al unui vector sau fiecare valoare a unui obiect, pe propriul rând.
Valoarea de la cheie sau null, fără eroare când cheia lipsește.
Filtrare și selecție
Intrarea neschimbată când cond este adevărată, altfel nimic.
Aplică expr fiecărui element al unui vector și colectează rezultatele.
Numele cheilor sortate sau valorile unui obiect, ca vector.
Lungimea unui vector sau șir, sau numărul de chei dintr-un obiect.
Doar elementele ale căror age este mai mare decât 18, într-un singur vector.
Colecții
Adevărat când cel puțin unul sau când fiecare element este adevărat sau trece un filtru.
Adevărat când cheia k există în obiect; in rulează același test din partea cheii.
Primul element, ultimul sau doar primele n rezultate ale lui f.
Cea mai mică sau cea mai mare valoare dintr-un vector.
Numerele de la 0 până la n, fiecare ca rezultat propriu.
Vectori imbricați aplatizați într-un singur vector plat.
Adevărat când x apare undeva în intrare; inside inversează rolurile.
Aplică f fiecărei valori de jos în sus, apoi reconstruiește toată intrarea.
Transformare
Un vector cu doar câmpul price al fiecărui element.
Suma unui vector de numere sau fuziunea unui vector de obiecte.
Convertește o valoare în șir sau un șir numeric în număr.
Codează intrarea ca șir JSON sau base64.
Un șir transformat în minuscule.
Șiruri
Un șir cu valoarea lui expr împletită în text.
Înlocuiește fiecare potrivire a tiparului sau doar prima, cu s.
Desparte un șir într-un vector după un separator sau lipește un vector într-un singur șir.
Testează un șir față de un tipar sau extrage potrivirile și grupurile numite.
Elimină un prefix sau un sufix, doar când este prezent.
Adevărat sau fals: șirul începe sau se termină cu s.
Un șir transformat în majuscule.
Un vector codificat ca rând CSV, rând TSV sau argumente shell puse între ghilimele.
Remodelare
Un obiect nou cu doar câmpurile id și name ale intrării.
Un vector cu name fiecărui element.
Un vector de obiecte {key, value} obținut dintr-un obiect.
Un obiect construit dintr-un vector de obiecte {key, value}.
Elemente grupate în subvectori după câmpul lor cat.
Sortează după un câmp sau păstrează un element pentru fiecare id distinct.
Actualizare și căi
Actualizează valoarea de la cheie rulând f pe ea.
Suprascrie valoarea de la cheie cu v.
Adună n la valoarea lui count, în loc.
Citește, scrie sau șterge valori la căi date ca vectori.
Control și logică
a când c este adevărată, b altfel, cu elif pentru mai multe ramuri.
Rulează f și rulează g cu mesajul de eroare în loc când f eșuează.
Oprește cu o eroare care poartă msg, cu excepția cazului în care un try o prinde.
Niciun rezultat; ramura respectivă dispare pur și simplu din rezultate.
Combină valori de adevărat și fals sau inversează una.
Avansat
Pliază tot vectorul într-o singură totalizare progresivă.
Ca reduce, dar emite starea după fiecare pas, nu doar ultima.
Următoarea intrare sau toate intrările rămase, trase în mijlocul filtrului.
O valoare ca text JSON sau text JSON parsat înapoi într-o valoare.
Text base64 decodat înapoi în șirul original.
Atribuire adâncă în structură, care creează nivelurile lipsă pe drum.
a dacă nu este null sau fals, altfel b (o valoare implicită).
Intrarea cu o cheie eliminată.
Fiecare cale din intrare ca vector de chei, de sus în jos.
Variabile și CLI
Definește $name ca șir shell, utilizabil în interiorul filtrului.
Definește $name din JSON brut, pentru numere, booleani, vectori sau obiecte.
Definește $name ca întregul conținut al unui fișier JSON.
Afișează rezultatele șir brute, fără ghilimele sau escape.
Afișează fiecare rezultat compact pe un rând, fără indentare.
Rulează filtrul o dată pe null, pentru a construi rezultatul din nimic.
Citește toată intrarea într-un singur vector înainte să ruleze filtrul.
Setează codul de ieșire din ultimul rezultat, astfel încât scripturile shell să îl poată testa.
Valoarea unei variabile de mediu, citită în interiorul filtrului.