2017-02-08 3 views
1

나는 다음과 같은 JSON 데이터가 있습니다jq 출력을 재구성 할 수 있습니까?

[ 
    {"name":"JSON", "good":true}, 
    {"name":"XML", "good":false}, 
    {"name":"JSON", "good":false}, 
    {"name":"HTML", "good":false}, 
    {"name":"XML", "good":true}, 
    {"name":"XML", "good":false} 
    ] 

사용하여 :

jq '.[] | select(.name =="XML") | .good', result will be : 
false 
true 
false 

가 어떻게 기록으로 [거짓, 참, 거짓]처럼 만들 수 있습니까?

답변

2

그냥 배열 생성자 내에서 전체 표현식을 포장하려고

jq '[.[] | select(.name =="XML") | .good]' 
[ 
    false, 
    true, 
    false 
] 

또는 --compact-output 플래그 한마디로

jq --compact-output '[.[] | select(.name =="XML") | .good ]' 
[false,true,false] 
+1

다시 감사합니다) 1 개 ++ – Freeman

+0

감사합니다. 그게 –

1

사용하여 같은 줄에 [] : 배열로 결과를 수집을하고, -c 옵션을 사용하십시오.

$ jq -c 'map(select(.name =="XML") | .good)' 

출력 :

[false,true,false] 
+0

고마워. 그것도 작동합니다 –