Skip to content

Przepisy jq wyjaśnione

Filtry jq używane na co dzień, pogrupowane według zadania: wchodzenie w wartość, filtrowanie i wybieranie, praca na kolekcjach, przekształcanie wartości i napisów, przebudowa do nowego obiektu lub tablicy, aktualizacja ścieżek w miejscu, rozgałęzianie logiki i zaawansowana redukcja, plus flagi wiersza poleceń kształtujące wejście i wyjście. Każdy wiersz łączy filtr z wynikiem, który daje.

jq to filtr: czyta JSON ze stdin, uruchamia potok wyrażeń rozdzielonych potokami (pipe) i zapisuje JSON na stdout. Kropka to bieżąca wartość; wszystko buduje się na niej. Najszybszy sposób nauki to przepuszczenie prawdziwych danych przez przepisy poniżej i obserwacja wyniku. Uruchamiaj je jako jq 'filtr' plik.json albo curl ... | jq 'filtr'.

Tabela referencyjna · 65 wpisy
65 of 65 rows
Dostęp
Całe wejście, sformatowane czytelnie.
Wartość pod kluczem lub kluczami zagnieżdżonymi.
Wartość pod kluczem, którego nazwa zawiera znaki specjalne.
Pierwszy element tablicy (ujemny indeks liczy od końca).
Każdy element tablicy albo każda wartość obiektu, w osobnej linii.
Wartość pod kluczem albo null, bez błędu, gdy klucz nie istnieje.
Filtrowanie i wybieranie
Wejście niezmienione, gdy cond jest prawdą, w przeciwnym razie nic.
Zastosuj expr do każdego elementu tablicy i zbierz wyniki.
Posortowane nazwy kluczy albo wartości obiektu w postaci tablicy.
Długość tablicy lub napisu albo liczba kluczy w obiekcie.
Tylko elementy, których age jest większe od 18, w jednej tablicy.
Kolekcje
Prawda, gdy co najmniej jeden albo gdy każdy element jest prawdziwy lub przejdzie filtr.
Prawda, gdy klucz k istnieje w obiekcie; in wykonuje ten sam test od strony klucza.
Pierwszy element, ostatni albo tylko pierwsze n wyników f.
Najmniejsza albo największa wartość w tablicy.
Liczby od 0 do n, każda jako osobny wynik.
Tablice zagnieżdżone spłaszczone w jedną płaską tablicę.
Prawda, gdy x występuje gdzieś wewnątrz wejścia; inside odwraca role.
Stosuje f do każdej wartości od dołu do góry, potem odbudowuje całe wejście.
Przekształcanie
Tablica zawierająca tylko pole price z każdego elementu.
Suma tablicy liczb albo scalenie tablicy obiektów.
Zamień wartość na napis albo numeryczny napis na liczbę.
Koduje wejście jako napis JSON albo base64.
Napis z małymi literami.
Napisy
Napis z wartością expr wplecioną w tekst.
Zamień każde dopasowanie wzorca albo tylko pierwsze na s.
Rozbij napis na tablicę po separatorze albo sklej tablicę w jeden napis.
Sprawdź napis względem wzorca albo wydobądź dopasowania i nazwane grupy.
Usuwa prefiks albo sufiks, tylko gdy jest obecny.
Prawda lub fałsz: napis zaczyna się albo kończy od s.
Napis z wielkimi literami.
Tablica zakodowana jako wiersz CSV, wiersz TSV albo zacytowane argumenty powłoki.
Przebudowa
Nowy obiekt z tylko polami id i name z wejścia.
Tablica z name każdego elementu.
Tablica obiektów {key, value} powstała z obiektu.
Obiekt zbudowany z tablicy obiektów {key, value}.
Elementy pogrupowane w podtablice według pola cat.
Sortuj po polu albo zostaw jeden element na każdy odrębny id.
Aktualizacja i ścieżki
Aktualizuje wartość pod kluczem, uruchamiając na niej f.
Nadpisuje wartość pod kluczem wartością v.
Dodaje n do wartości count, w miejscu.
Odczytuje, zapisuje albo usuwa wartości na ścieżkach podanych jako tablice.
Sterowanie i logika
a, gdy c jest prawdą, w przeciwnym razie b, z elif dla kolejnych gałęzi.
Uruchamia f, a gdy f zawiedzie, uruchamia g z komunikatem błędu.
Kończy z błędem niosącym msg, chyba że try go przechwyci.
Żadnego wyjścia; ta gałąź po prostu znika z wyników.
Łączy wartości prawda i fałsz albo odwraca jedną z nich.
Zaawansowane
Zwija całą tablicę w jedną narastającą sumę.
Jak reduce, ale emituje stan po każdym kroku, nie tylko ostatni.
Następne wejście albo wszystkie pozostałe wejścia, wczytane w trakcie filtra.
Wartość jako tekst JSON albo tekst JSON sparsowany z powrotem na wartość.
Tekst base64 zdekodowany z powrotem do oryginalnego napisu.
Przypisanie głęboko w strukturze, tworzące po drodze brakujące poziomy.
a, jeśli nie jest null ani fałszem, w przeciwnym razie b (wartość domyślna).
Wejście z jednym usuniętym kluczem.
Każda ścieżka w wejściu jako tablica kluczy, od góry do dołu.
Zmienne i CLI
Definiuje $name jako napis powłoki, używalny wewnątrz filtra.
Definiuje $name z surowego JSON, dla liczb, wartości logicznych, tablic lub obiektów.
Definiuje $name jako całą zawartość pliku JSON.
Wypisuje wyniki napisowe bez cudzysłowów i znaków ucieczki.
Wypisuje każdy wynik kompaktowo w jednej linii, bez wcięć.
Uruchamia filtr raz na null, żeby zbudować wyjście z niczego.
Wczytuje całe wejście do jednej tablicy przed uruchomieniem filtra.
Ustawia kod wyjścia z ostatniego wyniku, żeby skrypty powłoki mogły go testować.
Wartość zmiennej środowiskowej, odczytana wewnątrz filtra.