2016-01-17 12 views
13
plik

Moje wejście wygląda mniej więcej tak:Jak mogę zaznaczyć kilka pól w JQ

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

mogę uzyskać wszystkie nazwy logowania z tym: cat members | jq '.[].login'

ale nie byłem w stanie złamać składnia, aby uzyskać zarówno login, jak i identyfikator?

+0

Czy możesz podać przykład tego, co twój oczekiwany wynik powinien wyglądać? Istnieje wiele sposobów na reprezentowanie par login/id. –

Odpowiedz

20

Możesz użyć jq '.[] | .login, .id', aby uzyskać każde logowanie, a następnie jego identyfikator.

+0

Wygląda na to, że dane wejściowe są już strumieniem obiektów. –

+0

Wprowadzane przez użytkowników próbki wyglądają jak strumień obiektów, ale z powodu przykładowego skryptu, który dostarczają, zakładam, że jest zawinięty w tablicę, którą pominięto. –

+0

@SantiagoLapresta: Nie ma potrzeby, aby takie założenie. 'jq' działa wspaniale z sekwencją obiektów - nie ma potrzeby pakowania tablicy. Ciągi "..." i ostatni przecinek końcowy wymagają usunięcia, ale uważam, że jest to domyślne. –

6

Działa to dla mnie:

> echo '{"a":1,"b":2,"c":3}{"a":1,"b":2,"c":3}' | jq '{a,b}' 
{ 
    "a": 1, 
    "b": 2 
} 
{ 
    "a": 1, 
    "b": 2 
} 
Powiązane problemy