Aceasta este comanda jshon care poate fi rulată în furnizorul de găzduire gratuit OnWorks folosind una dintre multiplele noastre stații de lucru online gratuite, cum ar fi Ubuntu Online, Fedora Online, emulator online Windows sau emulator online MAC OS
PROGRAM:
NUME
jshon — Analizor JSON pentru shell
REZUMAT
jshon -[P|S|Q|V|C|I|0] [-F cale] -[t|l|k|u|p|a] -[s|n] valoare -[e|i|d] index
DESCRIERE
jshon analizează, citește și creează JSON. Este conceput pentru a fi cât mai utilizabil din
în interiorul carcasei și înlocuiește analizatoarele adhoc fragile din grep/sed/awk, precum și
analizoare grele de o linie realizate din perl/python.
jshon încarcă text json din stdin, efectuează acțiuni, apoi afișează ultima acțiune pe stdout.
Unele dintre opțiuni scot json, altele produc rezumate text simplu. Pentru că Bash are foarte
structuri de date imbricate slabe, jshon nu returnează JSON ca obiect nativ ca obișnuit
biblioteca ar. In schimb jshon păstrează un istoric al editărilor într-o stivă, iar tu îl manipulezi
cel mai de sus element JSON.
ACȚIUNI
Fiecare acțiune ia forma unei opțiuni scurte. Unele necesită argumente. În timp ce multe cazuri
of jshon pot fi transmise unul prin celălalt, acțiunile ar trebui să fie înlănțuite secvenţial pentru a reduce
apeluri. Toate exemplele folosesc acest exemplu json:
{"a":1,"b":[adevărat,fals,null,"str"],"c":{"d":4,"e":5}}
jshon [acțiuni] < sample.json
Cele mai comune utilizări numai în citire vor avea nevoie doar de câteva -e acțiuni și una -a în mijlocul
Le.
-t (tip) returnează șir, obiect, matrice, număr, bool, nul
jshon -t -> obiect
-l (lungime) returnează un număr întreg. Funcționează doar pe șir, obiect, matrice.
jshon -l -> 3
-k (chei) returnează o listă de chei separate de linie nouă. Funcționează doar pe obiect.
jshon -k -> abc
-e index
(extract) returnează valoarea json la „index”. Funcționează numai pe obiect, matrice. Indexul lui an
matricea este un număr întreg.
jshon -ec -> {"d":4,"e":5}
-a (în) mapează acțiunile rămase în elementul selectat. Funcționează doar pe obiecte
și matrice. Multiplu -a apelurile pot fi imbricate, deși nevoia este rară în practică.
jshon -eb -a -t -> bool bool șir nul
-s valoare
(șir) returnează un șir codificat json. Mai târziu poate fi (-i)inserat într-un existent
structura.
jshon -s „back\slash” -> „back\\slash”
-n valoare
(nonstring/number) returnează un element json. Mai târziu poate fi (-i)inserat într-un existent
structura. Valorile valide sunt „adevărat”, „fals”, „null”, „matrice”, „obiect”, numere întregi și
plutește. Funcționează și abrevierile t, f, n, [] și respectiv {}.
jshon -n obiect -> {}
-u (unstring) returnează un șir decodat. Funcționează doar pe tipuri simple: șir, int, real,
boolean, nul.
jshon -eb -e 3 -u -> str
-p (pop) scoate ultima manipulare din stivă, derulând înapoi istoricul. Util pentru
extragerea mai multor valori dintr-un singur obiect.
jshon -ec -ed -u -p -ee -u -> 4 5
-d index
(șterge) elimină un element dintr-o matrice sau obiect. Indicii de matrice negative se vor încheia
în jurul.
jshon -db -> {"a":1,"c":{"d":4,"e":5}}
-i index
(inserare) este complicat. Este inversul extractului. Extract pune un subelement json
pe stivă. Insert elimină un sub-element din stivă și inserează acel bit de json
în matricea/obiectul mai mare de dedesubt. Utilizați extract pentru a vă scufunda în arborele json,
delete/string/nonstring pentru a schimba lucrurile și inserați pentru a împinge modificările înapoi în
copac.
jshon -ea -ia -> jsonul original
jshon -s one -ia -> {"a":"one", ...}
Matricele sunt tratate într-un mod special. Trecerea numerelor întregi va insera o valoare fără
suprascrierea. Numerele întregi negative sunt acceptabile, la fel ca și șirul „append”. A suprascrie
o valoare dintr-o matrice: ștergeți indexul, -n/s noua valoare, apoi introduceți la index.
jshon -eb -d 0 -sq -i 0 -> {"b":"q",false,null,"str"}
NEMANIPULARE
Există mai multe meta-opțiuni care nu editează direct json. Apelați la acestea cel mult o dată pe
invocare.
-F
(fișier) citește dintr-un fișier în loc de stdin. Singura opțiune de non-manipulare pentru a lua un
a susținut.
-P (jsonp) elimină apelul jsonp înainte de a continua normal.
-S (sortare) returnează json sortat după cheie, în loc de ordinea originală.
-Q (liniștit) dezactivează raportarea erorilor pe stderr, deci nu trebuie să presărați „2> /dev/null”
pe tot parcursul scenariului dvs.
-V (după valoare) activează trecerea după valoare în stiva de editare a istoricului. În cazuri extreme cu
mii de valori profund imbricate în care acest lucru poate duce jshon alergând de câteva ori mai încet
în timp ce utilizați de câteva ori mai multă memorie. Cu toate acestea, valoarea secundară este mai sigură decât referința secundară și
provoacă în general mai puțină surpriză. Referința este activată în mod implicit deoarece nu există
riscă în timpul operațiunilor de numai citire și, în general, face editarea json mai convenabilă.
jshon -ec -n 7 -id -p -> c["d"] == 7
jshon -V -ec -n 7 -id -p -> c["d"] == 5
jshon -V -ec -n 7 -id -ic -> c["d"] == 7
cu -V , modificările trebuie introduse manual înapoi prin stivă, nu pur și simplu
scoaterea din valorile intermediare.
-C (continuare) privind erorile potențial recuperabile. De exemplu, extragerea de valori care nu
exist va adăuga „null” la stiva de editare în loc să anuleze. Comportamentul se poate schimba în
viitor.
-I editarea fișierelor (la loc). Necesită modificarea unui fișier și funcționează numai cu -F. Aceasta este
menit pentru a face modificări ușoare unui fișier json. Când este utilizat, ieșirea normală este suprimată
iar partea de jos a stivei de editare este scrisă.
-0 (delimitatori nul) Schimbă delimitătorul lui -u dintr-o linie nouă într-un nul. Această opțiune
afectează doar -u deoarece este singura dată când o linie nouă poate apărea în mod legitim în
ieșire.
--versiune
Returnează un marcaj de timp YYYYMMDD și iese.
ALTE UNELTE
jshon scoate întotdeauna un câmp pe linie. Multe instrumente Unix se așteaptă să fie separate de mai multe file
câmpuri pe linie. Transmite ieșirea prin „paste” pentru a remedia acest lucru. Cu toate acestea, pasta nu poate
gestionați liniile goale, așa că adăugați-le cu un substituent. Iată un exemplu:
jshon ... | sed 's/^$/-/' | lipiți -s -d '\t\t\n'
Aceasta înlocuiește spațiile cu „-” și îmbină fiecare trei rânduri într-una singură.
Există tot mai multe instrumente care produc rezultate json. Adesea acestea folosesc o linie orientată
hibrid json/text simplu în care fiecare linie este o structură json independentă. Din pacate asta inseamna
ieșirea în ansamblu nu este json legitim. Fie buclă prin datele linie cu linie
(chemând jshon o dată pentru fiecare linie) sau convertiți-l într-o matrice json legitimă. De exemplu:
în timp ce linia de citire; face jshon <<< "$line"; terminat <<(journalctl -o json)
journalctl -o json | sed -e '1i[' -e '$!s/$/,/' -e '$a]' | jshon
GOLF
Dacă vă pasă de versiunile extrem de scurte, argumentele pot fi condensate atunci când nu
provoacă ambiguitate. Exemplul de la -p(op) se poate juca golf după cum urmează:
jshon -ec -ed -u -p -ee -u == jshon -ec -ed -upee -u
Nu recomand să faceți acest lucru (îngreunează mult de înțeles lucrurile), dar unii oameni
golf în ciuda consecințelor.
CREAREA JSON
jshon poate crea json prin trecerea unui obiect gol ca intrare:
jshon -s one -ia <<< "{}"
AUTORI
jshon a fost scris de Kyle Keen[e-mail protejat]> cu patch-uri de la Dave Reisner
<[e-mail protejat]>, AndrewF (BSD, OSX, jsonp, sortare) și Jean-Marc A (solaris).
Utilizați jshon online folosind serviciile onworks.net