Bash Docker inspect:使用jq选择具有正斜杠的字段
我怎么才能得到Bash Docker inspect:使用jq选择具有正斜杠的字段,bash,docker,jq,Bash,Docker,Jq,我怎么才能得到HostPort值?我尝试了以下方法,但失败了 # docker inspect blah | jq '.[] | .NetworkSettings.Ports' { "22/tcp": [ { "HostIp": "0.0.0.0", "HostPort": "32776" } ] } 为什么不: # docker inspect blah | jq '.[] | .NetworkSettings.Ports.22
HostPort
值?我尝试了以下方法,但失败了
# docker inspect blah | jq '.[] | .NetworkSettings.Ports'
{
"22/tcp": [
{
"HostIp": "0.0.0.0",
"HostPort": "32776"
}
]
}
为什么不:
# docker inspect blah | jq '.[] | .NetworkSettings.Ports.22\/tcp.HostPort'
这将消除对其他工具的需求。
jq
支持对具有特殊字符的键使用双引号:
docker inspect --format '{{ (index (index .NetworkSettings.Ports "22/tcp") 0).HostPort }}' blah
编辑:中提到了这一点,其中还提到,如果需要,可以添加括号以帮助提高可读性:
jq '."22/tcp".HostPort'
上面的答案很接近,但需要添加一个括号才能正常工作
jq.“22/tcp”[.HostPort'
jq '.["22/tcp"].HostPort'