Extract data from the JSON file using bash

advertisements

This question already has an answer here:

  • Read the json data in shell script [duplicate] 4 answers

Let's say that we have this kind of JSON file:

{
  ...
  "quotes":{
     "SOMETHING":10,
     ...
     "SOMETHING_ELSE":120.4,
     ...
  }   }

How can I obtain those values and use them in order to add them together?

Am I able to do even this?

#!/bin/bash

#code ...

echo "$SOMETHING + $SOMETHING_ELSE" | bc

#code ...

#exit

I will obtain the JSON file with wget command. All I want is the content from this file.

Can you help me, please? I am a beginner in shell programming.


I usually use jq, a really fast json parser, to do this kind of things (because parsing a json file with tools like awk or sed is really error-prone).

Given an input file like this:

# file: input.json
{
  "quotes":{
    "SOMETHING":10,
    "SOMETHING_ELSE":120.4
  }
}

You can obtain the sum of the 2 fields with a simple filter:

jq '.quotes.SOMETHING + .quotes.SOMETHING_ELSE' input.json
# output -> 130.4

NOTE: jq is available in every major linux distribution. In a debian-derivative system you can install with a sudo apt-get install jq.