2017-09-12 7 views
1

私は複数のJSONの配列を持っています。私は特定の値を含むJSONの数を取得したいと思います。jq特定の値を含む配列のjsonsの数を取得

例:私はキーでVALUE1を探していた場合に

[ 
{ 
    "key": "value1", 
    "2ndKey":"2ndValue1" 
}, 
{ 
    "key": "value2", 
    "2ndKey":"2ndValue2" 
}, 
{ 
    "key": "value1", 
    "2ndKey":"2ndValue3" 
} 
] 

だから、結果は私がJQを使用してソリューションを取得したいと思い2.

でなければなりません。私はすでにいくつかの試みをしていたが、完全には機能しなかった。最高のものは次の通りです:

cat /tmp/tmp.txt | jq ' select(.[].key == "value1") | length ' 

正しい結果が得られますが、複数回表示されます。

誰でも私のコードをさらに改善することができます。前もって感謝します!

答えて

1

あなたはかなり近いです。以下に定義するようにカウントするために、この

map(select(.key == "value1")) | length 

または同等

[ .[] | select(.key == "value1") ] | length 
+0

!どうもありがとう! – Philipp

1

効率的かつ便利な方法を試してみてくださいすることは「回数」を使用することです。私が探していたものです

def count(s; cond): reduce s as $x (0; if ($x|cond) then .+1 else . end); 
count(.[]; .key == "value1") 
関連する問題