Mi archivo de entrada se parece a esto:
{
"login": "dmaxfield",
"id": 7449977,
...
}
{
"login": "dmaxfield",
"id": 7449977,
...
}
Puedo obtener todos los nombres de inicio de sesión con esto: cat members | jq '.[].login'
pero no he podido descifrar la sintaxis para obtener tanto el inicio de sesión como la identificación.
Respuestas:
Puede utilizar
jq '.[] | .login, .id'
para obtener cada inicio de sesión seguido de su identificación.fuente
jq
funciona muy bien con una secuencia de objetos, sin necesidad del contenedor de matriz. Las...
cadenas y la última coma final deben eliminarse, pero considero que eso está implícito.jq '.[] | {login, id}'
login.name
?jq '.[] | {login.name, id}'
parece funcionar, ¿cuál es la forma correcta, por favor?jq '.[] | {name: .login.name, id}'
Esto funciona para mi:
fuente
Para seleccionar valores que están sangrados en diferentes niveles (es decir, tanto el primer como el segundo nivel), puede usar lo siguiente:
fuente
Solo proporcione un ejemplo más aquí (jq-1.6):
Recorra una matriz y seleccione un campo de un elemento de objeto y un campo de objeto en ese objeto
Sin los datos de ejemplo:
.[]
: caminar a través de una matriz{id, name: .private_info.name}
: tome .id y .private_info.name y envuélvalo en un objeto con el nombre de campo "id" y "nombre" respectivamentefuente