2016-10-07 3 views
3

複数の値を取得するためにJSONファイルを解析しようとしています。私は配列(.info.file.hashes[])の特定の値( "A"/"B"/"C")を解析する方法を知っています。例については複数の値を取得するBash JQ JSONファイルの問題

f34d5f2d4577ed6d9ceec516c1f5a744 
66031dad95dfe6ad10b35f06c4342faa 
9df25fa4e379837e42aaf6d05d92012018d4b659 

b.json:今

{ 
    "Finish": 1475668827, 
    "Start": 1475668826, 
    "info": { 
    "file": { 
     "Score": 4, 
     "file_subtype": "None", 
     "file_type": "Image", 
     "hashes": [ 
     { 
      "name": "A", 
      "value": "f34d5f2d4577ed6d9ceec516c1f5a744" 
     }, 
     { 
      "name": "B", 
      "value": "66031dad95dfe6ad10b35f06c4342faa" 
     }, 
     { 
      "name": "C", 
      "value": "9df25fa4e379837e42aaf6d05d92012018d4b659" 
     }, 
     { 
      "name": "D", 
      "value": "4a51cc531082d216a3cf292f4c39869b462bf6aa" 
     }, 
     { 
      "name": "E", 
      "value": "e445f412f92b25f3343d5f7adc3c94bdc950601521d5b91e7ce77c21a18259c9" 
     } 
     ], 
     "size": 500 
    } 
    } 
} 

、どのようにすることができます結果

jq -r '.info.file.hashes[] | select(.name == ("A","B","C")).value' b.json 

b.jsonファイル上で次のコマンドを発行私は "完了"、 "開始"と複数の値を取得するハッシュ値は?私はコマンドを発行しようとしました。

jq -r '.info.file.hashes[] | select(.name == ("A","B","C")).value','.Finish','.Start' b.json 

とイムは、その結果を得る:

f34d5f2d4577ed6d9ceec516c1f5a744 
null 
66031dad95dfe6ad10b35f06c4342faa 
null 
9df25fa4e379837e42aaf6d05d92012018d4b659 
null 
null 
null 

期待される結果:

f34d5f2d4577ed6d9ceec516c1f5a744 
66031dad95dfe6ad10b35f06c4342faa 
9df25fa4e379837e42aaf6d05d92012018d4b659 
1475668827 
1475668826 
+0

jqはわかりませんが、 '.info.file.hashes []'配列から開始と終了を選択しようとしているようです。 – 123

+1

することもできます... 'jq -r '.info.file.hashes [] | .value 'b.json'を選択してください。 –

+0

@ l'L'l:はいtrueですが、ハッシュの「名前」から選択的な「値」だけが必要です。上の投稿された質問については、選択的なハッシュ値とともに「Finish」と「Start」の値(1475668827,1475668826)を取得しようとしています。 – Arun

答えて

3

文字通りダウンロードして手動

は試してみてください読ん

jq '(.info.file.hashes[] |select(.name == ("A","B","C")).value), .Finish, .Start' b.json 

"f34d5f2d4577ed6d9ceec516c1f5a744" 
"66031dad95dfe6ad10b35f06c4342faa" 
"9df25fa4e379837e42aaf6d05d92012018d4b659" 
1475668827 
1475668826 

終了値と開始値とは別にパイプをグループ化するために使用される括弧に注意してください。

+1

123:Great Thanks、今私はそれを得ました。 – Arun

関連する問題