web-dev-qa-db-fra.com

Comment puis-je sélectionner plusieurs champs dans jq

Mon fichier d'entrée ressemble à ceci:

{
"login": "dmaxfield",
"id": 7449977,
...
}
{
"login": "dmaxfield",
"id": 7449977,
...
}

Je peux obtenir tous les noms de connexion avec ceci: cat members | jq '.[].login'

mais je n'ai pas été capable de déchiffrer la syntaxe pour obtenir à la fois l'identifiant et le login?

42
J. Groesser

Vous pouvez utiliser jq '.[] | .login, .id' pour obtenir chaque login suivi de son identifiant.

65
user3899165

Cela fonctionne pour moi:

> echo '{"a":1,"b":2,"c":3}{"a":1,"b":2,"c":3}' | jq '{a,b}'
{
  "a": 1,
  "b": 2
}
{
  "a": 1,
  "b": 2
}
33
Peter V. Mørch

Afin de sélectionner des valeurs qui sont mises en retrait à différents niveaux (c'est-à-dire les premier et deuxième niveaux), vous pouvez utiliser les éléments suivants:

$ echo '{"a":{"aa":1,"ab":2},"b":3,"c":4}{"a":{"aa":5,"ab":6},"b":7,"c":8}' \
> | jq '[.a.aa,.a.ab,.b]'

[
  1,
  2,
  3
]
[
  5,
  6,
  7
]
3
vreyespue