Meu arquivo de entrada é semelhante a este:
{
"login": "dmaxfield",
"id": 7449977,
...
}
{
"login": "dmaxfield",
"id": 7449977,
...
}
Posso obter todos os nomes de login com este: cat members | jq '.[].login'
mas não consegui quebrar a sintaxe para obter o login e a id?
Respostas:
Você pode usar
jq '.[] | .login, .id'
para obter cada login seguido de seu id.fonte
jq
funciona muito bem com uma sequência de objetos - não há necessidade do wrapper de array. As...
strings e a última vírgula final precisam ser removidas, mas considero que isso está implícito.jq '.[] | {login, id}'
login.name
?jq '.[] | {login.name, id}'
parece funcionar, qual é a maneira correta, por favor?jq '.[] | {name: .login.name, id}'
Isso funciona para mim:
fonte
Para selecionar valores que são recuados em níveis diferentes (ou seja, primeiro e segundo níveis), você pode usar o seguinte:
fonte
Basta fornecer mais um exemplo aqui (jq-1.6):
Percorra uma matriz e selecione um campo de um elemento de objeto e um campo de objeto nesse objeto
Sem os dados de exemplo:
.[]
: percorrer uma matriz{id, name: .private_info.name}
: pegue .id e .private_info.name e envolva-os em um objeto com o nome de campo "id" e "nome" respectivamentefonte