Comando JQ no Linux com exemplos

Comando JQ no Linux com exemplos

O JSON é um formato de representação de dados usado para armazenar e transferir dados entre diferentes camadas de um aplicativo; Ele armazena dados na chave: pares de valor.

A sintaxe de JSON foi derivada de JavaScript, mas é independente da linguagem. É compatível com muitas linguagens de programação; Esses idiomas incluem código que pode ser usado para integrar o JSON ao programa; Porém, infelizmente, não podemos trabalhar com o JSON diretamente no Linux Shell, pois não pode interpretá -lo. Para trabalhar com JSON no shell Linux, usamos uma mistura de ferramentas como JQ e SED.

Esta postagem nos ensinará a usar o comando jq para manipular e trabalhar com dados JSON em um shell Linux.

Como instalar o comando jq

O comando JQ não está disponível em algumas distribuições Linux por padrão; Ele precisa ser baixado no sistema antes que ele possa ser usado no terminal; Você pode baixar o comando jq como qualquer outro pacote em seu sistema. No Ubuntu 20.04 Use o comando abaixo-dado para instalar o utilitário jq:

sudo apt install jq  

Basta substituir o apt pelo gerente de pacotes do seu sistema, se você estiver executando uma distribuição diferente do Ubuntu.

Se você estiver executando uma distribuição como o CentOS 8, que já possui JQ por padrão, você obterá uma saída semelhante a isso:

sudo dnf install jq  

Sintaxe

Agora podemos começar a usar o comando jq, pois ele foi instalado com sucesso em nosso sistema, mas primeiro, vamos dar uma olhada na sintaxe do comando jq:

jq [options] [arquivo…] jq [opções] --args [strings…] jq [options] --jsonargs [json_texts…] 

O comando JQ pode ser usado de várias maneiras diferentes; Ele pode ser usado diretamente em um arquivo json e também pode ser combinado com vários outros comandos para interpretar dados JSON. O comando jq pode ser usado com diferentes filtros, como o ““."," | ",", " ou o ““.[] ” filtrar para organizar dados JSON.

O comando JQ também tem opções diferentes como argumentos como o --aba, --fluxo, --recuo n, --não bufado, e a -eu opção de diretório. A sintaxe do comando jQ pode parecer complexa no começo, mas você se familiarizará com ele depois de ler o artigo inteiro.

Como organizar dados JSON usando o comando jq

O recurso mais simples e usado dos filtros de comando JQ. Eles são usados ​​para organizar e prettificar dados JSON ao imprimi -los para saída padrão.

  • Neste exemplo, temos um arquivo json chamado funcionário.JSON E precisamos gerar os dados para a saída padrão: "Workers": "Name": "John Brooks", "Id": "003"
    1"Trabalhadores": "Nome": "John Brooks", "Id": "003"

  • Podemos usar o comando CAT para mostrar os dados:
    funcionário do gato.JSON 

  • Os dados impressos para a saída padrão usando o comando CAT são desorganizados e confusos. Podemos organizar esses dados usando o comando jq junto com o '.' filtro:
    jq '.' funcionário.JSON 

Agora os dados se tornaram muito mais organizados, coloridos e mais fáceis de entender. Este filtro é especialmente necessário ao acessar dados das APIs; Os dados armazenados em APIs podem ser muito desorganizados e confusos.

Como acessar uma propriedade usando o comando jq

O .campo filtrar junto com o comando jq pode ser usado para acessar as propriedades do objeto no shell.

  • Se queremos apenas acessar e imprimir uma única propriedade para a saída padrão, podemos usar o .campo operador. E.G Para acessar a propriedade do trabalhador, podemos usar este comando:
    jq '.funcionário dos trabalhadores.JSON 

  • Também podemos acessar os itens presentes na propriedade usando o .campo operador. Para acessar o item de nome na propriedade do trabalhador, usaremos:
    jq '.trabalhadores.nome 'funcionário.JSON 

Como acessar um item de matriz usando o comando jq

Também podemos acessar e produzir os elementos presentes em uma matriz em um arquivo json usando o .[] operador. Para este exemplo, vamos modificar nosso arquivo JSON, para que pareça o seguinte:

["Name": "John Brooks", "Id": "003", "Nome": "Randy Park", "Id": "053", "Nome": "Todd Gray", " id ":" 009 "]
1["Name": "John Brooks", "Id": "003", "Nome": "Randy Park", "Id": "053", "Nome": "Todd Gray", " id ":" 009 "]
  1. Para produzir todas as matrizes presentes no arquivo json, executaremos o comando abaixo:
    jq '.[]' funcionário.JSON 

  2. Para produzir apenas a segunda matriz, podemos modificar o comando acima do ritmo da seguinte maneira:
    jq '.[1] 'funcionário.JSON 

  3. Lembre -se de que a matriz começa em 0

    Também podemos acessar as propriedades presentes na matriz usando o .operador de campo. E.G Se quisermos acessar a propriedade Name na terceira matriz, executaremos o seguinte comando:

    jq '.[2].nome 'funcionário.JSON 

  4. Da mesma forma, para acessar todas as propriedades do nome dentro de matrizes, podemos executar este comando:
    jq '.[].nome 'funcionário.JSON  

Conclusão

O comando JQ é usado para transformar os dados JSON em um formato mais legível e imprimi -los na saída padrão no Linux. O comando JQ é construído em torno dos filtros que são usados ​​para encontrar e imprimir apenas os dados necessários de um arquivo json.

Neste guia de instruções, aprendemos a usar o comando jq para organizar e filtrar dados JSON.