Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Syntax when there is a space in the key

Tags:

jq

This is driving me nuts.

I have a JSON that looks like this:

{
"gateways": [
    {
        "DHCP": "On",
        "External IPs": "46.244.46.66",
        "Firewall": "On",
        "NAT": "Off",
        "Name": "gateway",
        "Routed Networks": "photon, default-routed-network",
        "Selected": "*",
        "Syslog": "",
        "Uplinks": "d5p6v51-ext",
        "VPN": "Off"
    }
]
}

I can easily extract values for most of the keys.

E.g.

jq --raw-output .gateways[0].Name
gateway

However, what I really need to get is the "External IPs" value and I can't figure out how to manage the space.

I tried

jq --raw-output .gateways[0].'External IPs'

jq --raw-output .gateways[0].`External IPs`

jq --raw-output .gateways[0]."External IPs"

But none of these work.

Any hint?

like image 416
mreferre Avatar asked Nov 13 '15 19:11

mreferre


2 Answers

Use quoting as in:

jq --raw-output '.gateways[0]."External IPs"'
like image 93
Hans Z. Avatar answered Nov 19 '22 13:11

Hans Z.


Ok I figured it out.

In the end what @JeffMercado suggested worked. Problem is that apt-get install jq install version 1.3 of jq. I had to update manually jq (to 1.5) and then it worked.

Thanks!

like image 2
mreferre Avatar answered Nov 19 '22 13:11

mreferre