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.