Meine Eingabedatei sieht ungefähr so aus:
{
"login": "dmaxfield",
"id": 7449977,
...
}
{
"login": "dmaxfield",
"id": 7449977,
...
}
Ich kann alle Anmeldenamen damit erhalten: cat members | jq '.[].login'
aber ich konnte die Syntax nicht knacken, um sowohl das Login als auch die ID zu erhalten?
Antworten:
Sie können
jq '.[] | .login, .id'
jedes Login gefolgt von seiner ID abrufen.quelle
jq
funktioniert hervorragend mit einer Folge von Objekten - der Array-Wrapper ist nicht erforderlich. Die...
Zeichenfolgen und das letzte nachfolgende Komma müssen entfernt werden, aber ich halte das für impliziert.jq '.[] | {login, id}'
login.name
?jq '.[] | {login.name, id}'
scheint zu funktionieren, was ist der richtige Weg, bitte?jq '.[] | {name: .login.name, id}'
Das funktioniert bei mir:
quelle
Um Werte auszuwählen, die auf verschiedenen Ebenen eingerückt sind (dh sowohl auf der ersten als auch auf der zweiten Ebene), können Sie Folgendes verwenden:
quelle
Geben Sie hier nur ein weiteres Beispiel an (jq-1.6):
Gehen Sie durch ein Array und wählen Sie ein Feld eines Objektelements und ein Objektfeld in diesem Objekt aus
Ohne die Beispieldaten:
.[]
: Gehen Sie durch ein Array{id, name: .private_info.name}
: Nehmen Sie .id und .private_info.name und wickeln Sie es in ein Objekt mit den Feldnamen "id" bzw. "name" einquelle