Read JSON data in a shell script [duplicate] Read JSON data in a shell script [duplicate] bash bash

Read JSON data in a shell script [duplicate]


There is jq for parsing json on the command line:

 jq '.Body'

Visit this for jq: https://stedolan.github.io/jq/


tl;dr

$ cat /tmp/so.json | underscore select '.Messages .Body' ["172.16.1.42|/home/480/1234/5-12-2013/1234.toSort"]

Javascript CLI tools

You can use Javascript CLI tools like

Example

Select all name children of a addons:

underscore select ".addons > .name"

The underscore-cli provide others real world examples as well as the json:select() doc.


Similarly using Bash regexp. Shall be able to snatch any key/value pair.

key="Body"re="\"($key)\": \"([^\"]*)\""while read -r l; do    if [[ $l =~ $re ]]; then        name="${BASH_REMATCH[1]}"        value="${BASH_REMATCH[2]}"        echo "$name=$value"    else        echo "No match"    fidone

Regular expression can be tuned to match multiple spaces/tabs or newline(s). Wouldn't work if value has embedded ". This is an illustration. Better to use some "industrial" parser :)