Comando Bash JQ

Comando Bash JQ
Os dados JSON são usados ​​para vários propósitos. Mas os dados JSON não podem ser lidos facilmente do arquivo json usando scripts bash como outros arquivos normais. JQ A ferramenta é usada para resolver este problema. JQ O comando funciona como sed e Awk comando e usa um idioma específico de domínio para trabalhar com dados JSON. JQ não é um comando embutido. Então, você tem que instalar este comando para usá -lo. Como você pode instalar e aplicar JQ O comando para leitura ou manipulação de dados JSON é mostrado neste tutorial.

Instalação JQ

Execute o seguinte comando para instalar JQ no Ubuntu.

$ sudo apt-get install jq

Lendo dados JSON

Suponha que você declarou uma variável json nomeada Jsondata no terminal e correr JQ comando com essa variável para imprimir o conteúdo dessa variável.

$ Jsondata = '["livro": "php 7", "publicação": "apress",
"Book": "React 16 Essentials", "Publication": "Packt"] '
$ echo "$ jsondata" | jq '.'

Lendo dados JSON com a opção C

-C Opção usa com o comando jq para imprimir cada objeto JSON em cada linha. Depois de executar o seguinte comando, cada objeto da variável jsondata será impresso.

$ echo "$ jsondata" | jq -c '.[] '

Lendo um arquivo JSON

O comando jq pode ser usado para ler o arquivo json também. Crie um arquivo JSON chamado estudantes.JSON com o seguinte conteúdo para testar os próximos comandos deste tutorial.

Alunos.JSON

[[

"Roll": 3,
"Nome": "Micheal",
"Lote": 29,
"Departamento": "CSE"
,

"Roll": 55,
"Nome": "Lisa",
"Lote": 34,
"Departamento": "BBA"
,

"Roll": 12,
"Nome": "John",
"Lote": 22,
"Departamento": "Inglês"

]

Execute o seguinte comando para ler os alunos.arquivo json.

$ jq '.Alunos.JSON

Lendo o arquivo JSON com '|'

Você pode usar '|' Símbolo da seguinte maneira de ler qualquer arquivo JSON.

$ estudantes de gato.json | jq '.'

Lendo valores de chave única

Você pode ler facilmente qualquer objeto em particular de um arquivo json usando JQ comando. Em Alunos.JSON, Existem quatro objetos. Estes são rolo, nome, lote e departamento. Se você quiser ler o valor de departamento Chave apenas de cada registro e execute JQ comando da seguinte maneira.

$ jq '.[] | .estudantes do departamento.JSON

Lendo várias chaves

Se você deseja ler dois ou mais valores de objetos dos dados JSON, mencione os nomes dos objetos separando a vírgula (,) no comando jq. O comando a seguir recuperará os valores de nome e departamento chaves.

$ jq '.[] | .nome, .estudantes do departamento.JSON

Remova a chave dos dados JSON

JQ O comando é usado não apenas para ler dados JSON, mas também para exibir dados removendo a chave específica. O comando a seguir imprimirá todos os valores -chave de Alunos.JSON arquivo excluindo lote chave. mapa e del função são usados ​​em JQ comando para fazer a tarefa.

$ jq 'mapa (del (.lote)) 'alunos.JSON

Valores de mapeamento

Sem excluir a chave dos dados JSON, você pode usar a função do mapa com o comando jq para vários fins. Os valores numéricos dos dados JSON podem ser aumentados ou diminuídos pela função do mapa. Crie um arquivo JSON nomeado Número.JSON com o seguinte conteúdo para testar os próximos comandos.

[40,34,12,67,45]

Execute o seguinte comando para adicionar 10 com cada valor de objeto de Números, JSON.

$ jq 'mapa (.+10) 'números.JSON

Execute o seguinte comando para subtrair 10 de cada valor de objeto de Números, JSON.

$ jq 'mapa (.-10) 'números.JSON

Pesquisando valores por índice e comprimento

Você pode ler objetos do arquivo json especificando o índice e o comprimento específicos. Crie um arquivo JSON nomeado cores.JSON com os seguintes dados.

["Vermelho", "verde", "azul", "amarelo", "roxo"]

Execute o seguinte comando para ler dois valores a partir do terceiro índice de cores.arquivo json.

$ jq '.[2: 4] cores.JSON

Você pode especificar o comprimento ou o índice de partida para ler dados do arquivo json. No exemplo a seguir, o número de valor de dados é fornecido apenas. Nesse caso, o comando lerá quatro dados do primeiro índice de cores.JSON.

$ jq '.[: 4] cores.JSON

Você pode especificar o ponto de partida apenas sem nenhum valor de comprimento em JQ comando e o valor podem ser positivos ou negativos. Se o ponto de partida for positivo, o índice contará do lado esquerdo da lista e a partir de zero. Se o ponto de partida for negativo, o índice contará do lado direito da lista e a partir de um. No exemplo seguinte, o ponto de partida é -3. Então, os três últimos valores dos dados serão exibidos.

$ jq '.[-3:] cores.JSON

Quando você trabalhará com dados JSON e deseja analisar ou manipular dados de acordo com seus requisitos, o comando jq ajudará você a facilitar sua tarefa.