Bash JQ -kommando

Bash JQ -kommando
JSON -data brukes til forskjellige formål. Men JSON -data kan ikke leses lett fra JSON -filen ved å bruke Bash -skript som andre normale filer. JQ Verktøy brukes til å løse dette problemet. JQ Kommandoen fungerer som sed og awk Kommando, og den bruker et domenespesifikt språk for å jobbe med JSON -data. JQ er ikke en innebygd kommando. Så du må installere denne kommandoen for å bruke den. Hvordan du kan installere og bruke JQ Kommando for lesing eller manipulering av JSON -data vises i denne opplæringen.

JQ -installasjon

Kjør følgende kommando for å installere JQ på Ubuntu.

$ sudo apt-get install jq

Leser JSON -data

Anta at du har erklært en JSON -variabel som heter Jsondata i terminalen og løp JQ kommando med den variabelen for å skrive ut innholdet i den variabelen.

$ Jsondata = '["bok": "php 7", "publikasjon": "apress",
"Book": "React 16 Essentials", "Publication": "Packt"] '
$ ekko "$ jsondata" | jq '.'

Lese JSON -data med -c -alternativet

-C Alternativ bruker med JQ -kommando for å skrive ut hvert JSON -objekt i hver linje. Etter å ha kjørt følgende kommando, vil hvert objekt av Jsondata -variabelen bli skrevet ut.

$ ekko "$ jsondata" | jq -c '.[] '

Leser en JSON -fil

JQ -kommandoen kan brukes til å lese JSON -fil også. Lag en JSON -fil som heter Students.JSON med følgende innhold for å teste de neste kommandoene i denne opplæringen.

Studenter.JSON

[

"Rull": 3,
"Navn": "Micheal",
"Batch": 29,
"Avdeling": "CSE"
,

"Roll": 55,
"Navn": "Lisa",
"Batch": 34,
"Avdeling": "BBA"
,

"Roll": 12,
"Navn": "John",
"Batch": 22,
"Avdeling": "Engelsk"

]

Kjør følgende kommando for å lese studenter.JSON -fil.

$ jq '.'Studenter.JSON

Lese Json -fil med '|'

Du kan bruke '|' symbol på følgende måte å lese hvilken som helst JSON -fil.

$ CAT -studenter.JSON | jq '.'

Lesing av enkeltnøkkelverdier

Du kan enkelt lese et bestemt objekt fra en JSON -fil ved å bruke JQ kommando. I Studenter.JSON, Det er fire objekter. Disse er Rull, navn, batch og avdeling. Hvis du vil lese verdien av avdeling bare nøkkel fra hver post og deretter kjøre JQ kommando på følgende måte.

$ jq '.[] | .avdelingsstudenter.JSON

Leser flere nøkler

Hvis du vil lese to eller flere objektverdier fra JSON -data, må du nevne objektnavnene ved å skille komma (,) i JQ -kommandoen. Følgende kommando vil hente verdiene til Navn og avdeling nøkler.

$ jq '.[] | .Navn, .avdelingsstudenter.JSON

Fjern tasten fra JSON -data

JQ Kommando brukes ikke bare til å lese JSON -data, men også for å vise data ved å fjerne den aktuelle tasten. Følgende kommando vil skrive ut alle nøkkelverdier av Studenter.JSON fil ved å ekskludere parti nøkkel. kart og del funksjon brukes i JQ kommando for å gjøre oppgaven.

$ jq 'kart (del (.batch)) 'studenter.JSON

Kartlegge verdier

Uten å slette nøkkelen fra JSON -data, kan du bruke kartfunksjon med JQ -kommandoen til forskjellige formål. Numeriske verdier av JSON -data kan økes eller reduseres ved kartfunksjon. Lag en JSON -fil som heter Antall.JSON med følgende innhold for å teste de neste kommandoene.

[40,34,12,67,45]

Kjør følgende kommando for å legge til 10 med hver objektverdi på Tall, JSON.

$ jq 'kart (.+10) 'tall.JSON

Kjør følgende kommando for å trekke fra 10 fra hver objektverdi av Tall, JSON.

$ jq 'kart (.-10) 'tall.JSON

Søker verdier etter indeks og lengde

Du kan lese objekter fra JSON -filen ved å spesifisere den aktuelle indeksen og lengden. Lag en JSON -fil som heter farger.JSON med følgende data.

["Rød", "grønn", "blå", "gul", "lilla"]

Kjør følgende kommando for å lese to verdier som starter fra den tredje fargindeksen.JSON -fil.

$ jq '.[2: 4] 'Farger.JSON

Du kan spesifisere lengden eller startindeksen for å lese data fra JSON -filen. I det følgende eksemplet er antall dataverdier kun gitt. I dette tilfellet vil kommandoen lese fire data fra First Index of Colors.JSON.

$ jq '.[: 4] 'Farger.JSON

Du kan spesifisere utgangspunktet bare uten noen lengdeverdi i JQ Kommando og verdien kan være positiv eller negativ. Hvis utgangspunktet er positivt, vil indeksen telle fra venstre side av listen og starte fra null. Hvis utgangspunktet er negativt, vil indeksen telle fra høyre side av listen og starte fra en. I det følgende eksempel er utgangspunktet -3. Så de tre siste verdiene fra dataene vises.

$ jq '.[-3:] 'Farger.JSON

Når du vil jobbe med JSON -data og ønsker å analysere eller manipulere data i henhold til dine krav, vil JQ -kommandoen hjelpe deg med å gjøre oppgaven din enklere.