fbpx Comando jq no Linux: Filtrar e Formatar JSON | Certificação Linux

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
Exam Pass App — mais de 7.000 questões LPI, offline, em 5 idiomas, disponível no Android e na App Store
Disponível no
Google Play
Disponível na
App Store

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

Depois de anos vendo profissionais perderem horas em tarefas simples por não conhecer as ferramentas certas do Linux, decidi ensinar.
Hoje sou autor da maioria dos Materiais de Aprendizado oficiais da LPI e mentor de mais de 14.000 alunos certificados.

Conheça minha história completa →

Isso foi só uma peça. O curso ensina o caminho completo — do primeiro comando ao dia da prova.

Certificação Linux — a plataforma líder em certificações Linux no Brasil
WhatsApp