Fedezze fel, hogyan lehet hatékonyan használni az fx-et, a JSON manipulációs parancssori eszközt

Az fx egy népszerű JSON manipulációs parancssori eszköz. Telepíthető npm-en keresztül, főzhető vagy letölthető önálló bináris formátumban.

npm i -g fx

Az fx jól használható a curl paranccsal. Ha van olyan API, amely visszaadja a JSON-ot, és át akarja venni a struktúrát, vagy csak látni szeretné, akkor töltse be a JSON-t az fx fájlba.

göndör https://swapi.co/api/planets/ | fx

Az fx egy igazán ügyes interaktív móddal rendelkezik a JSON-ba való bejutáshoz.

Az egér vagy a nyílbillentyűkkel navigálhat a JSON-ban. Az fx támogatja a redőket, kattintson egy fájlra a kibontásához, vagy nyomja meg a jobbra mutató nyilat a kibontáshoz. Nyomja meg az e gombot az összes mező rekurzív kibontásához. A Shift + e billentyűkombinációval mindent összecsukhat.

Interaktív kotrógép

Interaktív módban nyomja meg a gombot. (pont) gomb. A terminál ablak végén egy kurzor jelenik meg, a JSON mezők felbukkanásával. A nyílgombokkal válassza ki a mezőt, majd nyomja meg az enter billentyűt, folytassa, amíg meg nem találja a szükséges adatokat. Ha vissza kell lépnie egy szinttel, nyomja meg a Ctrl + w billentyűket az utolsó útszakasz törléséhez. Ez a parancs pontosan eltávolítja az utolsó melletti részt. vagy [konzol. Ha újra szeretne kezdeni, nyomja meg a Ctrl + u gombot.

BTW, ezen a mezőn bármilyen JavaScript kifejezést megírhat, nem csak az út kifejezéseket.

Szép nyomtatás

Időnként nincs szükséged az interaktív diggerre, és szeretné, ha a JSON-t eléggé kinyomtatnák a kivágáshoz. Ezt meg lehet tenni hozzáadásával. argumentum az fx parancshoz.

göndör https://swapi.co/api/planets/1/ | fx.

Vagy a JSON csak egy részének nyomtatásához adja meg a kívánt elérési utat.

göndör https://swapi.co/api/planets/1/ | fx .films

Az API minden egyes alkalommal történő igénylése időigényes, mi van, ha előbb lemezen tároljuk?

göndör https://swapi.co/api/planets/1/> data.json

Most átadhatjuk a fájlt az első argumentumnak az fx-nek.

fx data.json .films

Az fx számára minden argumentum lehet valamilyen JavaScript függvény, hozzunk létre .fxrc fájlt, ahol hasznos funkciót és kivonatot adunk az újrafelhasználáshoz.

Snippets

Adjuk hozzá a londák erejét a parancssorba. Telepítse a lodash szoftvert világszerte.

npm i -g lodash

Hozzon létre .fxrc fájlt az otthoni könyvtárba. És tedd bele a következő sort.

Object.assign (globális, szükséges ('lodash / fp'))

Most már képes lesz hívni az összes lodash módszert, még _ előtag használata nélkül. Például nézze meg, hogy ki vállalkozik a közelmúltban reagálni:

göndör 'https://api.github.com/repos/facebook/react/commits'
| fx 'groupBy ("activ.author.name")' 'mapValues ​​(size)' \
      toPairs 'sortBy (1)' reverse 'take (10)' from pairs

Számítsuk meg a különféle szavak használatát a kötelező üzenetekben.

göndör 'https://api.github.com/repos/facebook/react/commits'
| fx 'térkép (' activ.message ')' 'térkép (szavak)' flatten \
     'map (lowerCase)' 'groupBy (identitás)' 'mapValues ​​(size)' \
      toPairs 'sortBy (1)' reverse 'take (30)' from pairs

Saját részletek hozzáadása

Ez is nagyon egyszerű. Például van egy API, amely megköveteli a dokumentumok base64 kódolását. Lássuk, hogyan lehet ezt megtenni.

Hozzon létre valamilyen funkciót, és rendeljen hozzá globálishoz. Például egy base64 kódrészlet.

global.base64 = str => Buffer.from (str) .toString ('base64')

Most valami ilyesmit tudok megtenni:

fx data.json '{érték: base64 (JSON.stringify (this))}') göndör -X POST

Vagy ha külön funkciókra osztják:

fx data.json JSON.stringify base64 '{érték: ez}' | göndör -X POST

Szerkesztés a helyén

Az fx segítségével könnyedén módosíthatja a JSON objektumokat a ... spread operátor használatával.

visszhang "{" szám ": 0} '| fx '{... ez, szám: this.count + 1}'

De ha megpróbál módosítani egy fájlt, és egy paranccsal menti a lemezt, akkor megsérül a fájl.

fx data.json '{... this, count: this.count + 1}'> data.json

Ez minden parancssorban közös. Például a sed rendelkezik egy speciális zászlóval a helyben lévő sed -i szerkesztéséhez. Tegyük fel ezt a funkciót is.

global.save = json => (szükséges ('fs'). writeFileSync (process.argv [2], JSON.stringify (json, null, 2)), json)

És most egyszerűen hívhatjuk a mentést:

fx data.json '{... ez, szám: 1}' mentés

A módosított mezőt akár a lemezre történő mentés közben is kiadhatjuk.

fx data.json '{... this, count: this.count + 1}' mentés .count

Xargs használata

Az fx a karakterláncokat „nyers” karakterláncokká idézőjelekként kinyomtatja, így ez hasznos lehet az fx szűrők beszélgetéséhez nem JSON alapú rendszerekkel. De ha át akarjuk adni az érvek listáját? A következő részlet hasznos lesz.

global.list = json => (json.forEach (x => console.log (x)), nincs meghatározva)

Alapértelmezés szerint a meghatározatlan stderr-be nyomtat, így ez nem befolyásolja a csöveket.

göndör https://swapi.co/api/planets/1/ | fx .films lista | xargs curl

JSON keresése

Az fx támogatja az interaktív JSON-keresést. A / gomb megnyomásával írhatja be a mintát a kereséshez.

A következő mintaegységre ugráshoz nyomja meg az n gombot. Szűrőt alkalmazhat a. is. Az fx nagyszerűen működik mindkettővel egyszerre.

De mi van, ha valami mást akarunk?

Úgy gondolom, hogy a JSON használatához a JavaScript a legjobb nyelv (a JavaScript Object Notation rövidítése). Mit akarunk megtalálni egy minta minden előfordulásáról és kinyomtatni azt stdout-ra? Készíthetünk saját keresési kódrészletet. Tehát készítsünk egy keresési kódrészletet!

Most rekurzívan kereshetünk a JSON-ban!

fx data.json 'find (/ fix / i)'

És még jobb, ha a korábbi részletlistát használva kinyomtathatja a megalapozott részeket.

fx data.json 'find (/ fix / i)' lista | xargs -L1 fx data.json

folyó

Az fx a JSON adatfolyamot is támogatja. Használhatja naplók elemzésére stb.

kubectl naplók ... | fx. üzenet

Csak a kívánt üzeneteket válassza ki (vagy szűrje) a kiválasztási segéd előkészítésével.

kubectl naplók ... | fx 'select (x => x.level == "info")' .meseage

Vagy csak összekapcsoljon néhány JSON fájlt a cat and pipe to fx fájlba.

macska * .json | fx .length

A témák támogatása

Az fx a témákat is támogatja. Megváltoztathatja a színeket és a behúzást.

global.FX_STYLE_SPACE = 4

Az alábbiakban két félelmetes téma található az fx számára:

  • fx-theme-monokai - monokai téma
  • fx-theme-night - éjszakai téma

Remélem élvezni fogja az fx használatát!

Ha tetszik, amit csinálok, kérjük, fontolgassa meg, hogy támogasson nekem Patreonba.
És kövessen engem a GitHub-on.