======JQ============ ====Externi odkazy==== [[https://stedolan.github.io/jq/manual/#tostring|JQ manual]]\\ ==== jq přepínače ==== -r ... zobrazí jen hodnotu, nedává do uvozovek\\ ==== jq příkazy ==== %%select(.pole == "hodnota")%% ... selekce, výběr, filtr = zobrazí jen hodnoty splňující podmínku\\ map(.hodnota) = .[] | .hodnota ... vnoží se do seznamu\\ tonumber\\ tostring\\ [:4]\\ ==== Příklady ==== %%cat soubor.json | [[https://stedolan.github.io/jq/manual/|jq]] -r '.automatic.filesystem | map([.mount, .kb_used, .kb_size] )' | jq -r '.[] | @csv'%% ... prevede json do csv\\ %%cat soubor.json | jq -r '.rows | map([.name, .chef_environment, .automatic.os, ('`date +%s`' - .automatic.ohai_time | tostring)] | join(", ")) | join("\n")'%% ... dalsi zpusob prevodu do csv\\ %%echo '[{"a": "b"}, {"a": "c"}]' | jq '.[] | .a'%% ... vypise "b" a "c"\\ %%echo '[{"a": "b"}, {"a": "c"}]' | jq '.[] | {text: .a}' ... vypise {"text": "b"}, {"text": "c"}%%\\ %%echo '[{"a": "b"}, {"a": "c"}]' | jq '[.[] | {text: .a}]' ... vypise [{"text": "b"}, {"text": "c"}]%%\\ %%cat az_vm_list-d_live.json | jq -r '.[] | select(.storageProfile.osDisk.osType == "Windows") | "\(.name)\t'%% ... vybirani jen urcitych zaznamu, formatovani na vystup\\ ====Spojovani JSON souboru==== %%jq -s add soubor1.json soubor2.json ... spoji/slouci 2 a vice json souboru. Respektuje strukturu objektu%%\\ %%jq -s . ... spoji vstupujici objekdy do pole (1. objekt pole = 1. objekt/soubor, 2. objekt pole = 2. objekt/soubor, ...)%%\\ %%jq '.[]' soubor1.json soubor2.json ... spoji json objekty. [{soubor1.objekt1}], [{soubor1.objekt2}], ... [{soubor2.objekt1}], ...%%\\ %%jq -s . soubor1.json soubor2.json ... spoji json objekty. [[{soubor1.objekt1}, {soubor1.objekt2}, ...], [{soubor2.objekt1}, ...]]%%\\ %%jq --slurp "[.[] | .[]" 1.json 2.json ... spoji json objekty. [{soubor1.objekt1}, {soubor1.objekt2}, ... {soubor2.objekt1}, ...]%%\\ ====Konverze typu==== %%echo '[{"number": 1, "string": "one"}]' | jq '.[] | .string + ": " + (.number|tostring)'%% ... prevede objekt .number na text\\ %%echo '[{"number": 1, "string": "one"}]' | jq -r '.[] | [ .string, .number|tostring ] | join(": ")'%% ... dalsi moznost toho sameho\\ ====Konverze TXT na JSON==== %%jq '. | split("\n") | map( {value: .} ) | {rules: .} ' -R -s rules.txt%% ... vytvori json strukturu, kde .rules je pole objektu s klicem "value" a hodnotou daneho radku TXT souboru\\ %%jq '. | split("\n") | map( split("\t") | {value: .[0], tag: .[1]} ) | {rules: .} ' -R -s rules.txt%% ... z txt kazdy radek rozdeli podle tabulatoru a zapise to json (1. hodnota jde do .rules.value, druha do .rules.key\\