'How to use jq when the variable has reserved characters?
I'm trying to get the following to work and it's not, help me please:
curl -s 'https://cryptofresh.com/api/asset/markets?asset=MKR' | jq .OPEN.BTC
The variable in question includes a period, I tried just about everything to escape the period && also tried surrounding it in quotes; no go ; this is the variable I'm looking to pull from (I ran jq without any filters, and truncated the output here to show what I need. Thanks in advance future problem solver!
curl -s 'https://cryptofresh.com/api/asset/markets?asset=MKR' | jq
....
"OPEN.BTC": {
"volume24": 0.932166,
"price": 0.09995,
"updated": "2016-05-04T03:03:29.000Z"
},
....
Solution 1:[1]
When a key contains characters that are invalid for identifiers, you'll have to quote the name.
."OPEN.BTC"
Or for older versions of jq, use an index.
.["OPEN.BTC"]
Example
... | jq '."OPEN.BTC"'
Solution 2:[2]
Another answer didn't work for me but the comment written by @jeff-mercado worked for me. So, adding it as an answer here.
If your key has dots like "OPEN.BTC" then your jq command should be
curl -s 'https://cryptofresh.com/api/asset/markets?asset=MKR' | jq '."OPEN.BTC"'
Put the key first in double quotes and then escape the first dot by wrapping it using single quotes.
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | Abel Callejo |
| Solution 2 | Kumaran |
