seabeck.pages.dev

Como usar jq para filtrar dados de JSON no terminal?

Filtrar dados JSON no terminal pode parecer complexo, mas com o jq, uma ferramenta poderosa e leve, você transforma essa tarefa em algo simples e rápido. O jq permite extrair, filtrar e transformar dados JSON diretamente na linha de comando, tornando-o essencial para desenvolvedores e analistas de dados que precisam processar informações em tempo real.

Pré-requisitos

Instalando o jq

Antes de começar, certifique-se de que o jq está instalado. No Linux, use:

sudo apt-get install jq  # Debian/Ubuntu
sudo yum install jq      # CentOS/RHEL

No macOS, com Homebrew:

brew install jq

Filtrando dados básicos com jq

Para extrair um campo específico de um arquivo JSON, use o ponto (.) seguido do nome da chave. Por exemplo, para obter o valor da chave "nome" em um arquivo data.json:

jq '.nome' data.json

Este comando exibirá apenas o conteúdo do campo "nome", ignorando o resto do documento.

Filtrando arrays e objetos aninhados

Para acessar dados dentro de arrays ou objetos aninhados, use a notação de ponto. Se o JSON contém um array chamado "usuarios" e você quer o primeiro item:

jq '.usuarios[0]' data.json

Para filtrar todos os itens de um array e extrair um campo específico, como "email":

jq '.usuarios[].email' data.json

Usando condicionais para filtrar

Para filtrar itens com base em uma condição, use a sintaxe select(). Por exemplo, para encontrar usuários com idade maior que 25:

jq '.usuarios[] | select(.idade > 25)' data.json

Este comando retorna apenas os objetos que atendem à condição especificada.

Exemplo Prático

Considere o seguinte arquivo JSON (data.json):

Entrada (data.json) Saída Esperada

{
  "usuarios": [
    {"nome": "Ana", "idade": 28, "email": "ana@email.com"},
    {"nome": "Bruno", "idade": 22, "email": "bruno@email.com"},
    {"nome": "Carla", "idade": 35, "email": "carla@email.com"}
  ]
}
      

{"nome": "Ana", "idade": 28, "email": "ana@email.com"}
{"nome": "Carla", "idade": 35, "email": "carla@email.com"}
      

Comando para obter a saída acima:

jq '.usuarios[] | select(.idade > 25)' data.json

Conclusão

Com o jq, você automatiza a filtragem de dados JSON em segundos, evitando erros manuais e ganhando produtividade no terminal. Seja para extrair campos específicos, filtrar arrays ou aplicar condições complexas, esta ferramenta oferece flexibilidade e velocidade para qualquer tarefa de processamento de dados.