Docker inspect:使用jq选择具有正斜杠的字段

时间:2017-04-04 17:58:07

标签: bash docker jq

# docker inspect blah | jq '.[] | .NetworkSettings.Ports'
{
    "22/tcp": [
     {
       "HostIp": "0.0.0.0",
       "HostPort": "32776"
     }
    ]
}

我如何获得HostPort值?我尝试了以下但失败了。

# docker inspect blah | jq '.[] | .NetworkSettings.Ports.22\/tcp.HostPort'

3 个答案:

答案 0 :(得分:2)

jq支持带有特殊字符的键的双引号:

jq '."22/tcp".HostPort'

编辑:the docs中提到了这一点,如果您愿意,还可以提及您可以添加括号以帮助提高可读性:

jq '.["22/tcp"].HostPort'

答案 1 :(得分:1)

为什么不:

docker inspect  --format '{{ (index (index .NetworkSettings.Ports "22/tcp") 0).HostPort }}' blah

这将消除其他工具的需求。

答案 2 :(得分:0)

以上答案很接近,但需要添加一个括号才能正常工作。

jq '."22/tcp"[].HostPort'