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 
5
3
6
5
4

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