Tema Janna La licenza non è convalidata, vai alla pagina delle opzioni del tema per convalidare la licenza, è necessaria una singola licenza per ogni nome di dominio.

Utilizzo del comando jq per analizzare i dati JSON su Linux

L'elaborazione dei dati JSON è una competenza essenziale per gli sviluppatori di software e gli amministratori di sistema. Il comando jq fornisce uno strumento potente e flessibile per analizzare e modificare i dati JSON in modo semplice ed efficace. Con la crescente dipendenza da JSON nelle applicazioni web e nei servizi cloud, diventa essenziale capire come utilizzare JQ per eseguire varie attività senza problemi. In questo articolo esploreremo i comandi di base di jq e come utilizzarli per facilitare l'elaborazione dei dati ed estrarne informazioni importanti.

use-jq-json-linux-00-featured-image Utilizzo del comando jq per analizzare i dati JSON su Linux

Jq è un programma parser molto potente e flessibile in grado di trasmettere e filtrare dati JSON da file e pipe UNIX. Questo articolo ti insegnerà le basi di jq, ti fornirà esempi di codice e alcune applicazioni alternative che puoi installare oggi.

A cosa serve GQ?

Comando jq È uno strumento da riga di comando utilizzato per manipolare e modificare i dati JSON (JavaScript Object Notation). JQ è una scelta popolare per gli sviluppatori di software e gli autori di script grazie alla sua capacità di lavorare con dati strutturati in modo semplice ed efficiente. Ecco alcuni degli usi principali di jq:

  1. analisi dei dati: JQ può essere utilizzato per estrarre parti specifiche di dati JSON, come elementi o valori specifici, semplificando la comprensione di dati grandi e complessi.
  2. Modifica dati: puoi utilizzare jq per modificare i dati JSON, ad esempio aggiungendo o eliminando elementi o modificando valori.
  3. formato dei dati:jq è in grado di formattare i dati JSON in un modo che li renda più leggibili, il che aiuta a migliorare l'analisi dei dati.
  4. filtro dati: jq può essere utilizzato per filtrare i dati in base a determinati criteri, ad esempio ottenere tutti gli elementi che soddisfano determinate condizioni.
  5. Conversione dei dati: jq può essere utilizzato per convertire i dati JSON in altri formati, come CSV, semplificandone l'utilizzo in altre applicazioni.
  6. Unione dei dati:jq può essere utilizzato per combinare più dati JSON in un singolo file, il che aiuta a migliorare la gestione dei dati.

Nel complesso, jq ​​è uno strumento potente e flessibile che rende il lavoro con i dati JSON più semplice ed efficiente, soprattutto quando si lavora con dati grandi e complessi in ambienti di programmazione o di amministrazione di sistema.

L'uso più comune di jq è elaborare ed elaborare le risposte JSON dalle API Software as a Service (SaaS). Ad esempio, puoi utilizzare jq con cURL per sfruttare gli endpoint API di Digitalocean per ottenere i dettagli del tuo account.

Un terminale che espone un modulo di accesso API Digitalocean a jq.
Oltre a ciò, jq è anche una potente utility per la gestione di file JSON di grandi dimensioni. Alcuni dei software di database più popolari di oggi come MongoDB, PostgreSQL e MySQL supportano JSON come mezzo di archiviazione dei dati. Pertanto, imparare jq ti dà un vantaggio nel comprendere come funzionano questi sistemi di database.

Buono a sapersi: scopri alcuni dei migliori strumenti per modificare i file JSON in Chrome.

Installa e usa jq

Ecco come installare e utilizzare jq Su diversi sistemi operativi:

use-jq-json-linux-01-sample-jq-saas-api-access Utilizzo del comando jq per analizzare i dati JSON su Linux use-jq-json-linux-03-sample-ipinfo-jq-curl Utilizzo del comando jq per analizzare i dati JSON su Linux use-jq-json-linux-04-sample-github-api-output Utilizzo del comando jq per analizzare i dati JSON su Linux

installa jq

Su Windows

  1. Usando Cioccolatoso:
    • Apri il prompt dei comandi come amministratore.
    • Immettere il seguente comando:
      bash
      choco install jq
  2. Scarica il file eseguibile:
    • È possibile scaricare il file eseguibile da repository jq su GitHub.
    • Posiziona il file in qualsiasi cartella del tuo sistema e aggiungi quella cartella al percorso del tuo sistema (PATH).

su macOS

  1. Utilizzo dell'Homebrew:
    • Apri l'app Terminale.
    • Immettere il seguente comando:
      bash
      brew install jq

su Linux

  • Per le distribuzioni Debian / Ubuntu:
    bash
    sudo apt-get install jq
  • Per le distribuzioni Cappello rosso/Fedora:
    bash
    sudo dnf install jq
  • Per le distribuzioni Arch Linux:
    bash
    sudo pacman -S jq

Usa jq

use-jq-json-linux-05-custom-json-object Utilizzo del comando jq per analizzare i dati JSON su Linux

use-jq-json-linux-06-jq-custom-script-working Utilizzo del comando jq per analizzare i dati JSON su Linux use-jq-json-linux-07-database-entry-selection Utilizzo del comando jq per analizzare i dati JSON su Linux

1. Visualizzare i dati

Supponiamo che tu abbia un file JSON denominato data.json, puoi visualizzare il contenuto di questo file utilizzando:

bash
jq . data.json

2. Estrai un elemento specifico

Se vuoi estrarre un oggetto specifico, usa:

bash
jq '.key' data.json

Ad esempio, se hai:

json
{
"name": "John",
"age": 30
}

Puoi estrarre il nome usando:

bash
jq '.name' data.json

3. Formato JSON

Puoi formattare i dati JSON in un modo che li renda più leggibili utilizzando:

bash
jq '.' data.json

4. Filtraggio dei dati

Supponiamo di avere dati contenenti una serie di elementi, puoi filtrare gli elementi in base a una condizione specifica. Per esempio:

json
[
{ "name": "Alice", "age": 25 },
{ "name": "Bob", "age": 30 }
]

Per ottenere articoli più vecchi di 25 anni:

bash
jq '.[] | select(.age > 25)' data.json

5. Modificare i dati

È inoltre possibile modificare i valori. Ad esempio, per cambiare il nome in “Charlie”:

bash
jq '.name = "Charlie"' data.json

use-jq-json-linux-08-filter-entry-qualities-database Utilizzo del comando jq per analizzare i dati JSON su Linux use-jq-json-linux-09-conditional-filtering-database Utilizzo del comando jq per analizzare i dati JSON su Linux use-jq-json-linux-10-modified-entry-database Utilizzo del comando jq per analizzare i dati JSON su Linux

jq Un potente strumento per elaborare i dati JSON dalla riga di comando, rendendolo molto utile per gli sviluppatori di software e gli amministratori di sistema. Imparando a utilizzare jq, puoi migliorare notevolmente la tua efficienza nel lavorare con i dati.

Per iniziare con jq, installa il suo pacchetto binario sul tuo sistema:
Dopo aver appreso le nozioni di base, le sezioni seguenti ti mostreranno alcuni trucchi che puoi eseguire con jq.

Buono a sapersi: scopri come gestire i flussi di testo utilizzando sed in Linux.

1. Crea un lettore di feed di base utilizzando jq

use-jq-json-linux-13-new-custom-json-object-database Utilizzo del comando jq per analizzare i dati JSON su Linux use-jq-json-linux-14-raw-data-strip-database-output Utilizzo del comando jq per analizzare i dati JSON su Linux use-jq-json-linux-15-jaq-sample-database-read Utilizzo del comando jq per analizzare i dati JSON su Linux

La maggior parte dei siti Web moderni offre oggi endpoint API aperti per leggere i dati all'interno delle proprie piattaforme. Ad esempio, ogni repository Github ha il proprio URL API per recuperare gli ultimi commit e problemi per quel progetto.

Un terminale che visualizza il "code wall" predefinito per l'API Github.
Puoi utilizzare un endpoint API come questo con jq per creare un semplice feed "simile a RSS". Per iniziare, utilizza cURL per verificare se l'endpoint funziona correttamente:

ricciolo https://api.github.com/repos/bitcoin/bitcoin/issues
Esegui quanto segue per stampare la prima voce nel tuo feed:

ricciolo https://api.github.com/repos/bitcoin/bitcoin/issues | GQ '.[0]'
Questo mostrerà i diversi campi che l'API Github invia a jq. Puoi usarli per creare il tuo oggetto JSON personalizzato passando l'input a un filtro con parentesi graffe ({}):

ricciolo https://api.github.com/repos/bitcoin/bitcoin/issues | JK'.[0] | {Titolo:.Titolo}'
L'aggiunta di un filtro virgola (,) all'interno delle parentesi graffe ti consente di aggiungere più campi al tuo oggetto personalizzato:

ricciolo https://api.github.com/repos/bitcoin/bitcoin/issues | JK'.[0] | {titolo: .title, url: .html_url, autore: .user.login}'
Un terminale che visualizza un oggetto JSON personalizzato dall'API Github.
Rimuovendo lo "0" all'interno delle parentesi quadre verrà applicato il filtro jq all'intero feed:

ricciolo https://api.github.com/repos/bitcoin/bitcoin/issues | GQ'.[] | {titolo: .title, url: .html_url, autore: .user.login}'

Puoi anche creare un piccolo script Bash per visualizzare le ultime versioni del tuo progetto Github preferito. Incolla il seguente blocco di codice in un file di testo della shell vuoto:

#!/bin/bash # Utilizzo: ./script.sh [0…29] REPO=”https://api.github.com/repos/bitcoin/bitcoin/issues” arriccia $REPO | jq “.[$1] | {titolo: .title, url: .html_url, autore: .user.login}”

Salva il file, quindi esegui il comando seguente per renderlo eseguibile:

chmod u+x ./script.sh
Metti alla prova il tuo nuovo lettore di feed elencando l'ultima versione nel tuo repository Github preferito:

./script.sh 0
Un terminale che visualizza lo script personalizzato in esecuzione e stampa la versione più recente da Github.

A proposito: scopri come creare feed RSS personalizzati utilizzando RSS-Bridge in Linux.

2. Lettura e ricerca nel database JSON

use-jq-json-linux-16-gojq-sample-database-read Utilizzo del comando jq per analizzare i dati JSON su Linux use-jq-json-linux-17-fq-database-read Utilizzo del comando jq per analizzare i dati JSON su Linux

Oltre a leggere i dati dalle API, puoi anche utilizzare jq per gestire i file JSON nel tuo computer locale. Inizia creando un semplice file di database JSON utilizzando il tuo editor di testo preferito:

nano ./database.json
Incolla il seguente blocco di dati nel tuo file, quindi salvalo:

[ {“id”: 1, “nome”: “Ramces”, “saldo”: 20}, {"id": 2, "nome": "Alice", "saldo": 30}, {"id": 3, "nome": "Bob", "saldo": 10}, {"id": 4, "nome": "Charlie", "saldo": 20}, {“id”: 5, “nome”: “Maria”, “saldo”: 50 ]
Verifica se jq legge correttamente il tuo file JSON stampando il primo oggetto nell'array del database:

jq '.[0]' database.json
Il terminale visualizza jq mentre stampa la prima voce nel database JSON.
Esegui una query sul tuo database JSON utilizzando il filtro "Indice identificatore oggetto". Nel mio caso, cerco il valore chiave ".name" in ciascuna voce nel mio database:

GQ'.[] | Database “.nome”.json
Puoi anche utilizzare alcune delle funzioni integrate di jq per filtrare le tue query in base a determinati attributi. Ad esempio, puoi trovare e stampare tutti gli oggetti JSON che contengono un valore ".name" composto da più di sei caratteri:

GQ'.[] | select((.nome|lunghezza)>6)' database.json
Il terminale visualizza l'output jq con vincolo di lunghezza del nome.
Lavorare su database JSON con jq
Inoltre, jq può funzionare su database JSON in modo simile a un foglio di calcolo di base. Ad esempio, il comando seguente stampa la somma della chiave “.balance” per ciascun oggetto nel database:

GQ'[.[] | .Saldo] | Aggiungi database.json
Puoi anche estenderlo aggiungendo un'istruzione condizionale alla tua query. Quanto segue aggiungerà ".balance" solo se il valore ".name" del secondo oggetto è "Alice":

jq 'se .[1].name == “Alice” allora [ .[] | .Saldo] | Aggiungi un altro "il secondo nome non è Alice" alla fine del database.json
Il terminale visualizza l'istruzione condizionale in jq in esecuzione sul database.
È possibile rimuovere temporaneamente le variabili dal database JSON. Questo può essere utile se stai testando il tuo filtro e vuoi assicurarti che sia ancora in grado di gestire il tuo set di dati:

jq 'del(.[1].nome) | .[]' database.json

Il terminale visualizza la seconda voce senza un nome di chiave JSON.
Puoi anche inserire nuove variabili nel tuo database utilizzando l'operatore “+”. Ad esempio, la riga seguente aggiunge la variabile "active: true" al primo oggetto nel database:

JK'.[0] + {active:true}' database.json
Il terminale visualizza un valore chiave aggiuntivo sulla prima voce del database.
Nota: puoi rendere permanenti le modifiche eseguendo il porting dell'output del comando jq nel file di database originale: jq'.[0] + {attivo: vero}' database.json > database.json.

3. Converti i dati non JSON in jq

Un'altra caratteristica interessante di jq è che può accettare e funzionare con dati non JSON. Per raggiungere questo obiettivo, il programma utilizza una "modalità slurp" alternativa in cui converte qualsiasi spazio e dato delimitato da caratteri di fine riga in un array JSON.

Puoi abilitare questa funzione comunicando i dati a jq utilizzando il flag -s:

eco '1 2' | jk-s.
Un terminale che visualizza una stringa di testo convertita in un array JSON.
Un vantaggio di convertire i dati grezzi in un array è che puoi manipolarli utilizzando i numeri di indice dell'array. Il seguente comando aggiunge due valori puntando alla posizione del loro array trasformato:

eco '1 2' | gq -s'.[0] + .[1]'
Puoi sviluppare questa posizione dell'array e generare un nuovo codice JSON attorno ad essa. Ad esempio, questo codice converte il testo da un comando echo in un oggetto JSON tramite un filtro tra parentesi graffe:

echo '6 'Mallory' 10' | jq -s '{"id": .[0], "nome": .[1], "saldo": .[2]}'
Un terminale che visualizza un oggetto JSON personalizzato nel formato del modello di database.
Oltre a prendere dati grezzi, jq può anche restituire dati non JSON come output. Ciò è utile se stai utilizzando jq come parte di uno script più grande e hai bisogno solo del risultato dei suoi filtri.

Per fare ciò, esegui jq seguito dal flag -r. Ad esempio, il seguente comando legge tutti i nomi dal mio file di database e li restituisce come dati di testo semplice:

jq -r '.[] | Database “.nome”.json
Il terminale visualizza un elenco di nomi dal database con i relativi formati rimossi.
Parser JSON alternativi per jq

Poiché il codice jq è open source, molti sviluppatori hanno creato le proprie versioni del parser JSON. Ognuno ha il proprio punto di forza unico che migliora o modifica una parte fondamentale di jq.

1. Giaq

Jaq è un potente parser JSON che fornisce una funzionalità quasi identica ottimizzata per jq.

Uno dei maggiori punti di forza di Jaq ​​scritto in Rust è che può eseguire jq fino a 30 volte più velocemente del parser nativo pur mantenendo la compatibilità con le versioni precedenti. Questo da solo lo rende prezioso quando esegui grandi filtri jq e desideri massimizzare le prestazioni del tuo dispositivo.

Terminale che mostra jaq in esecuzione sul mio database di esempio.
Tuttavia, uno svantaggio di jaq è che non è attualmente disponibile nei repository Debian, Ubuntu e Fedora. L'unico modo per ottenerlo è scaricare Homebrew o compilarlo dal sorgente.

2. Gojq

Gojq è un parser JSON alternativo scritto interamente in Go. Fornisce una versione accessibile e facile da usare di jq che puoi installare su quasi tutte le piattaforme.

Il software jq nativo può essere incredibilmente conciso nei messaggi di errore. Di conseguenza, il debug degli script jq è particolarmente difficile per un nuovo utente jq. Gojq risolve questo problema mostrando dove si trova l'errore nello script e fornendo messaggi dettagliati sul tipo di errore che si è verificato.

Un terminale che visualizza un database modello leggibile per gojq.
Un altro punto di forza di gojq è che può leggere ed elaborare file JSON e YAML. Ciò può essere particolarmente utile se sei un utente Docker e Docker Compose e desideri automatizzare il flusso di lavoro di distribuzione.

Il problema più grande di Gojq è che ha rimosso alcune funzionalità presenti di default nel parser jq nativo. Ad esempio, opzioni come –ascii-output, –seq e –sort-keys non esistono in gojq.

A proposito: scopri come ottimizzare il tuo codice JSON con alcuni dei migliori strumenti di abbellimento JSON di oggi.

3.fq

A differenza di jaq e gojq, fq è un kit di strumenti software completo in grado di analizzare testo e dati binari. Può funzionare con una varietà di formati popolari come JSON, YAML, HTML e persino FLAC.

Terminale che mostra fq che legge il tipico file di database.
La più grande caratteristica di fq è che ha un lettore di file esadecimale integrato. Ciò rende più semplice osservare la struttura interna del file per determinare come è stato creato e se c'è qualcosa che non va. A parte questo, fq usa anche la stessa sintassi di jq quando ha a che fare con il testo, il che lo rende facile da imparare per chiunque abbia familiarità con jq.

Uno svantaggio di questo obiettivo ambizioso è che FQ è ancora in fase di intenso sviluppo. Pertanto, alcune funzionalità e comportamenti del software sono ancora soggetti a modifiche estese.

Esplorare JQ, come funziona e cosa lo rende speciale è solo il primo passo per imparare a creare programmi sul tuo computer. Immergiti nel meraviglioso mondo della programmazione leggendo le basi della programmazione della shell.

JQ è uno strumento indispensabile nel mondo della programmazione e dell'analisi dei dati. Padroneggiando l'uso di questo strumento, puoi accelerare il processo di elaborazione dei dati JSON e renderlo più efficiente. Sperimenta i diversi comandi e modelli presentati in questo articolo per diventare più professionale nel lavorare con i dati e sfruttare le funzionalità offerte da JQ per migliorare la tua produttività nei tuoi progetti futuri.

Vai al pulsante in alto