Skip to content

jq-opskrifter forklarede

De jq-filtre, der bruges hver dag, grupperet efter job: gribe fat i en værdi, filtrere og vælge, arbejde med samlingerne, omdanne værdier og strenge, omforme til et nyt objekt eller array, opdatere stier på stedet, forgrene på logik og håndtere avanceret reduktion – plus kommandolinjeflagene, der former input og output. Hver række parer filteret med det resultat, det giver.

jq er et filter: det læser JSON på stdin, kører en pipeline af udtryk adskilt af pipes og skriver JSON på stdout. Prikket er den aktuelle værdi; alt bygger på den. Den hurtigste måde at lære det på er at sende rigtige data gennem opskrifterne nedenfor og kigge på outputtet. Kør dem som jq 'filter' fil.json eller curl ... | jq 'filter'.

Referencetabel · 65 poster
65 of 65 rows
Adgang
Hele inputtet, pænt udskrevet.
Værdien under en nøgle eller under indlejrede nøgler.
Værdien under en nøgle, hvis navn indeholder specialtegn.
Det første element i et array (negativt tæller fra slutningen).
Hvert element i et array, eller hver værdi i et objekt, på sin egen linje.
Værdien under nøglen, eller null, uden fejl når nøglen mangler.
Filtrér og vælg
Inputtet uændret, når cond er sandt, ellers intet.
Anvender expr på hvert element i et array og samler resultaterne.
De sorterede nøglenavne, eller værdierne, i et objekt som array.
Længden af et array eller en streng, eller antallet af nøgler i et objekt.
Kun elementerne, hvis alder er større end 18, som ét array.
Samlinger
Sandt, når mindst ét element, eller når alle elementer, er truthy eller består et filter.
Sandt, når nøglen k findes i objektet; in kører den samme test fra nøglens side.
Det første element, det sidste eller kun de første n output af f.
Den mindste eller største værdi i et array.
Tallene fra 0 op til n, hvert som sit eget output.
Indlejrede arrays foldet sammen til ét fladt array.
Sandt, når x optræder et sted i inputtet; inside bytter rollerne om.
Anvender f på hver værdi nedefra og op og genopbygger derefter hele inputtet.
Omdan
Et array med kun price-feltet fra hvert element.
Summen af et array af tal, eller sammenlægningen af et array af objekter.
Tvinger en værdi til en streng, eller en numerisk streng til et tal.
Indkoder inputtet som en JSON-streng eller base64.
En streng med små bogstaver.
Strenge
En streng med værdien af expr flettet ind i teksten.
Erstarter hver forekomst af mønstret, eller kun den første, med s.
Del en streng i et array ved en separator, eller lim et array sammen til én streng.
Test en streng mod et mønster, eller træk match og navngivne captures ud.
Fjern et præfiks eller et suffiks, kun når det er til stede.
Sandt eller falsk: strengen begynder, eller slutter, med s.
En streng med store bogstaver.
Et array indkodet som en CSV-række, en TSV-række eller citerede shell-argumenter.
Omform
Et nyt objekt med kun felterne id og name fra inputtet.
Et array med hvert elements navn.
Et array af {key, value}-objekter lavet af et objekt.
Et objekt bygget af et array af {key, value}-objekter.
Elementer grupperet i underarrays efter deres cat-felt.
Sortér efter et felt, eller behold ét element pr. distinct id.
Opdatering og stier
Opdaterer værdien på nøglen ved at køre f på den.
Overskriver værdien på nøglen med v.
Lægger n til værdien af count, på stedet.
Læs, skriv eller slet værdier på stier givet som arrays.
Kontrol og logik
a når c er sandt, ellers b, med elif til flere grene.
Kør f, og kør i stedet g med fejlmeddelelsen, når f fejler.
Stop med en fejl, der bærer msg, medmindre en try fanger den.
Intet output overhovedet; den gren forsvinder simpelthen fra resultaterne.
Kombinér sande og falske værdier, eller vend én.
Avanceret
Folder hele arrayet sammen til én løbende total.
Som reduce, men den emitterer tilstanden efter hvert trin, ikke kun det sidste.
Det næste input, eller alle resterende input, trukket ind midt i filteret.
En værdi som dens JSON-tekst, eller JSON-tekst parset tilbage til en værdi.
Base64-tekst dekodet tilbage til den oprindelige streng.
Tildeling dybt i strukturen; manglende niveauer skabes undervejs.
a, hvis den ikke er null eller false, ellers b (en standardværdi).
Inputtet med én nøgle fjernet.
Hver sti i inputtet som et array af nøgler, fra top til bund.
Variabler og CLI
Definér $name som en shell-streng, brugbar inde i filteret.
Definér $name ud fra rå JSON, til tal, booleske værdier, arrays eller objekter.
Definér $name som hele indholdet af en JSON-fil.
Udskriver strengresultater råt, uden citater eller escapes.
Udskriver hvert resultat kompakt på én linje, uden indrykning.
Kører filteret én gang på null for at bygge output fra ingenting.
Læser hele inputtet ind i ét array, før filteret kører.
Sætter exitkoden ud fra det sidste output, så shell-scripts kan teste resultatet.
Værdien af en miljøvariabel, læst inde i filteret.