Skip to content

jq-recept förklarade

De jq-filter du använder varje dag, grupperade efter jobb: nå in i ett värde, filtrera och välja, arbeta med samlingar, omvandla värden och strängar, forma om till ett nytt objekt eller en ny array, uppdatera sökvägar på plats, förgrena på logik och hantera avancerad reduktion, plus kommandoradsflaggorna som formar in- och utdata. Varje rad parar filtret med resultatet det ger.

jq är ett filter: det läser JSON från stdin, kör en pipeline av uttryck åtskilda av pipe och skriver JSON till stdout. Punkten är det aktuella värdet; allt byggs på den. Snabbaste sättet att lära sig är att skicka riktig data genom recepten nedan och titta på utdata. Kör dem som jq 'filter' fil.json eller curl ... | jq 'filter'.

Referenstabell · 65 poster
65 of 65 rows
Åtkomst
Hela indata, snyggt formaterade.
Värdet vid en nyckel, eller nästlade nycklar.
Värdet vid en nyckel vars namn innehåller specialtecken.
Det första elementet i en array (negativt räknar från slutet).
Varje element i en array, eller varje värde i ett objekt, på sin egen rad.
Värdet vid nyckeln, eller null, utan fel när nyckeln saknas.
Filtrera och välj
Indata oförändrade när cond är sant, annars ingenting.
Tillämpa expr på varje element i en array och samla resultaten.
De sorterade nyckelnamnen, eller värdena, i ett objekt som en array.
Längden på en array eller sträng, eller antalet nycklar i ett objekt.
Bara elementen vars age är större än 18, som en array.
Samlingar
Sant när minst ett, eller när alla, element är sanna eller passerar ett filter.
Sant när nyckeln k finns i objektet; in kör samma test från nyckelns sida.
Det första elementet, det sista, eller bara de första n utdata från f.
Det minsta eller största värdet i en array.
Talen från 0 upp till n, vart och ett som sin egen utdata.
Nästlade arrayer kollapsade till en enda platt array.
Sant när x förekommer någonstans i indata; inside vänder rollerna.
Tillämpar f på varje värde nerifrån och upp, bygger sedan hela indatan igen.
Omvandla
En array med bara price-fältet från varje element.
Summan av en array av tal, eller sammanslagningen av en array av objekt.
Tvinga ett värde till en sträng, eller en numerisk sträng till ett tal.
Kodar indatan som en JSON-sträng eller base64.
En sträng i gemener.
Strängar
En sträng med värdet av expr inflätat i texten.
Ersätt varje träff av mönstret, eller bara den första, med s.
Dela en sträng i en array vid en avgränsare, eller limma en array till en enda sträng.
Testa en sträng mot ett mönster, eller plocka ut träffarna och de namngivna grupperna.
Ta bort ett prefix, eller ett suffix, bara när det finns.
Sant eller falskt: strängen börjar, eller slutar, med s.
En sträng i versaler.
En array kodad som en CSV-rad, en TSV-rad eller citerade shell-argument.
Forma om
Ett nytt objekt med bara fälten id och name från indatan.
En array med varje elements name.
En array av {key, value}-objekt från ett objekt.
Ett objekt byggt från en array av {key, value}-objekt.
Element grupperade i delarrayer efter deras cat-fält.
Sortera efter ett fält, eller behåll ett element per distinkt id.
Uppdatering och sökvägar
Uppdaterar värdet vid nyckeln genom att köra f på det.
Skriv över värdet vid nyckeln med v.
Lägger n till värdet vid count, på plats.
Läs, skriv eller ta bort värden vid sökvägar givna som arrayer.
Kontroll och logik
a när c är sant, b annars, med elif för fler grenar.
Kör f, och kör g med felmeddelandet i stället när f misslyckas.
Stoppar med ett fel som bär msg, om inte ett try fångar det.
Ingen utdata alls; den grenen försvinner helt enkelt från resultaten.
Kombinera sanna och falska värden, eller vänd på ett.
Avancerat
Viker hela arrayen till ett löpande total.
Som reduce, men ger ut tillståndet efter varje steg, inte bara det sista.
Nästa indata, eller alla återstående indata, indragna mitt i filtret.
Ett värde som JSON-text, eller JSON-text tolkat tillbaka till ett värde.
Base64-text avkodat tillbaka till den ursprungliga strängen.
Tilldelning djupt i strukturen, som skapar saknade nivåer på vägen.
a om det inte är null eller falskt, annars b (ett standardvärde).
Indatan med en nyckel borttagen.
Varje sökväg i indatan som en array av nycklar, uppifrån och ned.
Variabler och CLI
Definierar $name som en shell-sträng, användbar inuti filtret.
Definierar $name från rå JSON, för tal, booleska värden, arrayer eller objekt.
Definierar $name som hela innehållet i en JSON-fil.
Skriver ut strängresultat råa, utan citattecken eller escape.
Skriver ut varje resultat kompakt på en rad, utan indrag.
Kör filtret en gång på null, för att bygga utdata från ingenting.
Läser hela indatan i en array innan filtret körs.
Sätter exitkoden från den sista utdatan, så att shell-skript kan testa resultatet.
Värdet av en miljövariabel, läst inuti filtret.