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 53654
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.