fbpx Certificação Linux: Comando jq no Linux (manipula arquivos json) [Guia Básico]

Blog

Comando jq no Linux (manipula arquivos json) [Guia Básico]

📅 06/12/2021 ⏱ 2 min ✍️ Uira Ribeiro
Linuxcomandos
Comando jq no Linux (manipula arquivos json) [Guia Básico]

O comando jq é indispensável para manipulação de dados no formato JSON, como indentar, ordenar, compactar e mostrar as chaves JSON.

Ele não vem instalado como padrão na maioria das distribuições.

O pacote jq pode ser instalado no Debian/Ubunto com o comando:

$ sudo apt-get install jq

No Red Hat/CentOS/Fedora, o comando para instalar o jq é:

$ sudo yum install jq

Nos exemplos a seguir, considere os seguintes dados no formato JSON:

$ cat nomes.json {"primeiro_nome":"Sarah","sobrenome":"Silva"}{"primeiro_nome":"Ana","sobrenome":"Ferreira"}{"primeiro_nome":"Emilio","sobrenome":"Moura"}{"primeiro_nome":"Clara","sobrenome":"Martins"}{"primeiro_nome":"José","sobrenome":"Pereira"}

O jq pode ser usado para indentar um arquivo JSON para um formato elegante. A opção "-C" colore as chaves e itens:

$ cat nomes.json | jq {  "primeiro_nome": "Sarah",  "sobrenome": "Silva"}{  "primeiro_nome": "Ana",  "sobrenome": "Ferreira"}{  "primeiro_nome": "Emilio",  "sobrenome": "Moura"}{  "primeiro_nome": "Clara",  "sobrenome": "Martins"}{  "primeiro_nome": "José",  "sobrenome": "Pereira"}

O jq pode ser usado para ordenar os itens do JSON por uma determinada chave, como primeiro_nome:

$ cat nomes.json | jq -s -c 'sort_by(.primeiro_nome) | .[]'{"primeiro_nome":"Ana","sobrenome":"Ferreira"}{"primeiro_nome":"Clara","sobrenome":"Martins"}{"primeiro_nome":"Emilio","sobrenome":"Moura"}{"primeiro_nome":"José","sobrenome":"Pereira"}{"primeiro_nome":"Sarah","sobrenome":"Silva"}

A opção "-s" carrega os valores em um array, de forma que é possível aplicar um filtro sobre eles. Já a opção "-c" compacta o resultado, ao invés de expandi-lo.

Pode verificar o tamanho de um determinado item:

$ jq '.primeiro_nome |length' nomes.json 53654

Para mostrar somente as chaves únicas de um JSON:

$ jq -c 'keys' nomes.json  | sort | uniq["primeiro_nome","sobrenome"]

É possível filtrar somente uma chave:

$ cat nomes.json | jq '.sobrenome' "Silva""Ferreira""Moura""Martins""Pereira"

Aprenda muito mais sobre Linux em nosso curso online. Você pode efetuar a matrícula aqui. Se você já tem uma conta, ou quer criar uma, basta entrar ou criar seu usuário aqui.

Gostou? Compartilhe

Uira Ribeiro

Prof. Uirá Ribeiro

Chair do Board do Linux Professional Institute

Especialista Linux com mais de 20 anos de experiência.
Autor de 5 livros e mentor de mais de 14.000 alunos certificados.
20 certificações de alto nível, incluindo LPIC-3, CKA, RHCE e AWS Solutions Architect.

WhatsApp