jq Notes

Posted by Paweł Sacawa on Tuesday, November 21, 2023
Last Modified on Tuesday, March 12, 2024

Wskazówki

Usunięcie przedrostka z obiektu:

jq '.[]|(.file|= ltrimstr("../"))' compile_commands.json

Rozdziel .command na odstępy, przypisz do .arguments:

jq 'map  ((.command | split(" ")) as $args | .arguments |= $args | del (.command))' compile_commands.json

Filtruj na obecnosc /SHARED/ w argumentach, potem weź arument ~ /MODULE/

jq '.[]|select(.arguments|any(test("SHARED"))) | .arguments|.[] | (select(test ("MODULE")))'`

Rekurencja + wybieranie poszczególnych wartości:

recurse(.nodes[])? | {id, app_id}`

Interpolacja łańcuchów:

rabin2 -j -S build/main | jq '.sections|sort_by(.size)|.[]|select(.name|test("debug")) | "\(.size) \(.name) " '

Usunęcie pewnych flag kompilatora z compile_commands.json:

[.[]| .arguments |= [.[]|select(test("^-(W|f|m)")|not)]]

Przykład użycia with_entries:

with_entries(select(.key != "capabilities"))

Generuj listę dla API REST:

seq 100 | jq -s '{lsit_of_strings : map(tostring)}'