简体   繁体   中英

Bash JQ getting multiple values Issue in JSON file

I'm trying to parse a JSON file for getting multiple values. I know how to parse the specific values ( "A"/"B"/"C") in the array (.info.file.hashes[]) .

For Example : When issuing the following command over the file b.json

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

Result :

f34d5f2d4577ed6d9ceec516c1f5a744
66031dad95dfe6ad10b35f06c4342faa
9df25fa4e379837e42aaf6d05d92012018d4b659  

Where 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
    }
  }
}

Now, how can i get multiple values with "Finish", "Start" along with the hash values? I have tried issuing the command.

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

and Im getting the result as:

f34d5f2d4577ed6d9ceec516c1f5a744
null
66031dad95dfe6ad10b35f06c4342faa
null
9df25fa4e379837e42aaf6d05d92012018d4b659
null
null
null

Expected Result :

f34d5f2d4577ed6d9ceec516c1f5a744
66031dad95dfe6ad10b35f06c4342faa
9df25fa4e379837e42aaf6d05d92012018d4b659
1475668827
1475668826

Literally just downloaded and read the manual

Try

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

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

Note the brackets used for grouping the pipe separately from the Finish and Start values.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM