Comando jq no Linux (manipula arquivos json) [Guia Básico]
O comando jq é indispensável para manipulação de dados no formato JSON, como indentar, ordenar, compactar e mostrar as chaves JSON.
Ele não vem instalado como padrão na maioria das distribuições.
O pacote jq pode ser instalado no Debian/Ubunto com o comando:
$ sudo apt-get install jq
No Red Hat/CentOS/Fedora, o comando para instalar o jq é:
$ sudo yum install jq
Nos exemplos a seguir, considere os seguintes dados no formato JSON:
$ cat nomes.json
{"primeiro_nome":"Sarah","sobrenome":"Silva"}
{"primeiro_nome":"Ana","sobrenome":"Ferreira"}
{"primeiro_nome":"Emilio","sobrenome":"Moura"}
{"primeiro_nome":"Clara","sobrenome":"Martins"}
{"primeiro_nome":"José","sobrenome":"Pereira"}
O jq pode ser usado para indentar um arquivo JSON para um formato elegante. A opção “-C” colore as chaves e itens:
$ cat nomes.json | jq
{
"primeiro_nome": "Sarah",
"sobrenome": "Silva"
}
{
"primeiro_nome": "Ana",
"sobrenome": "Ferreira"
}
{
"primeiro_nome": "Emilio",
"sobrenome": "Moura"
}
{
"primeiro_nome": "Clara",
"sobrenome": "Martins"
}
{
"primeiro_nome": "José",
"sobrenome": "Pereira"
}
O jq pode ser usado para ordenar os itens do JSON por uma determinada chave, como primeiro_nome:
$ cat nomes.json | jq -s -c 'sort_by(.primeiro_nome) | .[]'
{"primeiro_nome":"Ana","sobrenome":"Ferreira"}
{"primeiro_nome":"Clara","sobrenome":"Martins"}
{"primeiro_nome":"Emilio","sobrenome":"Moura"}
{"primeiro_nome":"José","sobrenome":"Pereira"}
{"primeiro_nome":"Sarah","sobrenome":"Silva"}
A opção “-s” carrega os valores em um array, de forma que é possível aplicar um filtro sobre eles. Já a opção “-c” compacta o resultado, ao invés de expandi-lo.
Pode verificar o tamanho de um determinado item:
$ jq '.primeiro_nome |length' nomes.json
5
3
6
5
4
Para mostrar somente as chaves únicas de um JSON:
$ jq -c 'keys' nomes.json | sort | uniq
["primeiro_nome","sobrenome"]
É possível filtrar somente uma chave:
$ cat nomes.json | jq '.sobrenome'
"Silva"
"Ferreira"
"Moura"
"Martins"
"Pereira"
Aprenda muito mais sobre Linux em nosso curso online. Você pode efetuar a matrícula aqui. Se você já tem uma conta, ou quer criar uma, basta entrar ou criar seu usuário aqui.
Gostou? Compartilhe
Tag:/dev, bash, certificação, certificaçãolinux, code, Comptia, developer, empreendedorismo, exame, freesoftware, gnu, hack, jq, Linux, linuxfan, linuxfun, linuxmint, lovelinux, LPI, LPIC, management, nerd, opensource, php, prova, shell, software, softwarelivre, sql, tech, ti, unix