fbpx Certificação Linux: Guia Completo do Comando jq no Linux: Manipulando Dados JSON com facilidade

Blog

Guia Completo do Comando jq no Linux: Manipulando Dados JSON com facilidade

📅 13/08/2024 ⏱ 6 min ✍️ Uira Ribeiro
LinuxShellAutomação
Guia Completo do Comando jq no Linux: Manipulando Dados JSON com facilidade

O comando jq no Linux é uma ferramenta indispensável para quem trabalha com dados JSON. Se você é um administrador de sistemas, desenvolvedor, ou analista de dados, aprender a usar o jq pode economizar muito tempo e esforço ao lidar com JSON na linha de comando. Neste guia completo, você aprenderá o que é o jq, como instalá-lo, e como utilizá-lo para manipular e transformar dados JSON de maneira eficiente.

O que é o jq no Linux?

O jq é uma poderosa ferramenta de linha de comando usada para processar, consultar, e transformar dados em formato JSON. Ele funciona de maneira semelhante a ferramentas como sed ou awk, mas é especificamente projetado para lidar com JSON, tornando-o essencial para tarefas que envolvem APIs, automação, e processamento de grandes volumes de dados.

Por que Usar o jq no Linux?

Com o aumento do uso de JSON como formato de dados, especialmente em APIs e configurações de sistemas, o jq se tornou uma ferramenta essencial. Ele permite que você manipule dados JSON diretamente no terminal, sem a necessidade de escrever scripts complexos em linguagens de programação.

Como Instalar o jq no Linux

A instalação do jq é simples e pode ser feita diretamente através do gerenciador de pacotes da sua distribuição Linux. Veja como:

Instalação no Ubuntu ou Debian

sudo apt-get install jq

Instalação no Fedora

sudo dnf install jq

Instalação no CentOS/RHEL

sudo yum install jq

Comandos Básicos do jq

Agora que você instalou o jq, vamos explorar alguns comandos básicos para começar a utilizá-lo.

1. Filtrando Dados Simples com jq

Considere o seguinte JSON:

{
  "nome": "João",
  "idade": 30,
  "cidade": "São Paulo"
}

Para extrair apenas o nome:

echo '{"nome": "João", "idade": 30, "cidade": "São Paulo"}' | jq '.nome'

Saída:

"João"

2. Formatando JSON com jq

O jq pode formatar JSON de maneira legível:

echo '{"nome": "João", "idade": 30, "cidade": "São Paulo"}' | jq .

Saída:

{
  "nome": "João",
  "idade": 30,
  "cidade": "São Paulo"
}

3. Filtrando Arrays com jq

Para listar apenas os nomes de um array de objetos JSON:

echo '[{"nome": "João", "idade": 30}, {"nome": "Maria", "idade": 25}, {"nome": "José", "idade": 40}]' | jq '.[].nome'

Saída:

"João"
"Maria"
"José"

4. Aplicando Condições com jq

Filtre pessoas com idade maior que 30:

echo '[{"nome": "João", "idade": 30}, {"nome": "Maria", "idade": 25}, {"nome": "José", "idade": 40}]' | jq '.[] | select(.idade > 30)'

Saída:

{
  "nome": "José",
  "idade": 40
}

5. Transformando Estruturas JSON

Crie uma lista de nomes separados por vírgula:

echo '[{"nome": "João", "idade": 30}, {"nome": "Maria", "idade": 25}, {"nome": "José", "idade": 40}]' | jq -r '.[].nome' | paste -sd ","

Saída:

João,Maria,José

6. Extraindo Múltiplos Campos Simultaneamente

Se você precisar extrair mais de um campo de um objeto JSON, pode fazer isso facilmente com jq:

echo '{"nome": "João", "idade": 30, "cidade": "São Paulo"}' | jq '{nome, cidade}'

Saída:

{
  "nome": "João",
  "cidade": "São Paulo"
}

7. Renomeando Campos em JSON

Você pode renomear campos ao processar JSON com jq. Aqui está como renomear nome para full_name:

echo '{"nome": "João", "idade": 30}' | jq '{full_name: .nome, idade: .idade}'

Saída:

{
  "full_name": "João",
  "idade": 30
}

8. Lidando com Arrays e Transformando Dados

Suponha que você tenha um array de objetos e queira extrair os valores de um campo específico e transformá-los em uma nova estrutura:

echo '[{"produto": "A", "preco": 10}, {"produto": "B", "preco": 15}, {"produto": "C", "preco": 20}]' | jq '[.[] | {item: .produto, valor: .preco}]'

Saída:

[
  {
    "item": "A",
    "valor": 10
  },
  {
    "item": "B",
    "valor": 15
  },
  {
    "item": "C",
    "valor": 20
  }
]

9. Filtrando com Condições Complexas

Você pode criar filtros complexos usando operadores lógicos para extrair dados que atendam a múltiplas condições:

echo '[{"nome": "João", "idade": 30, "cidade": "São Paulo"}, {"nome": "Maria", "idade": 25, "cidade": "Rio de Janeiro"}, {"nome": "José", "idade": 40, "cidade": "São Paulo"}]' | jq '.[] | select(.idade > 30 and .cidade == "São Paulo")'

Saída:

{
  "nome": "José",
  "idade": 40,
  "cidade": "São Paulo"
}

10. Calculando Estatísticas com jq

Se você tiver um array de números, pode usar jq para calcular a soma, média, e outros valores agregados:

echo '[1, 2, 3, 4, 5]' | jq '{soma: add, media: (add / length), minimo: min, maximo: max}'

Saída:

{
  "soma": 15,
  "media": 3,
  "minimo": 1,
  "maximo": 5
}

11. Extraindo e Somando Valores de um Campo Específico

Se você tiver um array de objetos e precisar somar os valores de um campo específico, como preços:

echo '[{"produto": "A", "preco": 10}, {"produto": "B", "preco": 15}, {"produto": "C", "preco": 20}]' | jq '[.[] | .preco] | add'

Saída:

45

12. Transformando JSON em CSV

Você pode converter dados JSON em formato CSV usando jq, o que é útil para exportar dados para planilhas:

echo '[{"nome": "João", "idade": 30}, {"nome": "Maria", "idade": 25}, {"nome": "José", "idade": 40}]' | jq -r '.[] | [.nome, .idade] | @csv'

Saída:

"João",30
"Maria",25
"José",40

13. Modificando e Atualizando Valores

Você pode usar jq para modificar valores em um JSON, por exemplo, aumentando a idade em 5 anos:

echo '[{"nome": "João", "idade": 30}, {"nome": "Maria", "idade": 25}, {"nome": "José", "idade": 40}]' | jq 'map(.idade += 5)'

Saída:

[
  {
    "nome": "João",
    "idade": 35
  },
  {
    "nome": "Maria",
    "idade": 30
  },
  {
    "nome": "José",
    "idade": 45
  }
]

Usos Avançados do jq no Linux

1. Extraindo Dados de APIs com jq e curl

Combine jq com curl para manipular dados JSON retornados de APIs:

curl -s 'https://api.exemplo.com/dados' | jq '.resultados[] | {nome, valor}'

2. Somando Valores com jq

Para somar valores numéricos em um array:

echo '[1, 2, 3, 4, 5]' | jq 'add'

Saída:

15

Conclusão: Por que o jq é Essencial para Profissionais de TI

O jq não é apenas uma ferramenta poderosa; é essencial para qualquer profissional de TI que precise manipular JSON regularmente. Seja para processar respostas de APIs, automatizar tarefas, ou analisar grandes volumes de dados, o jq oferece uma solução simples e eficiente.

Perguntas Frequentes sobre o jq no Linux

1. O jq funciona em todas as distribuições Linux?
Sim, o jq é compatível com a maioria das distribuições Linux.

2. Posso usar o jq para modificar arquivos JSON diretamente?
Sim, você pode redirecionar a saída do jq para modificar arquivos JSON.

3. O jq suporta outras linguagens além do JSON?
Não, o jq é especificamente projetado para JSON.

Recursos Adicionais


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