如何用jq命令从GitHub发布JSON中提取指定browser_download_url值
解决方案
直接用以下jq命令即可提取你需要的browser_download_url:
jq '.assets[] | select(.browser_download_url | endswith("ghostpdl-10.01.1.tar.xz")) | .browser_download_url' github.json
命令说明
.assets[]:遍历JSON中的assets数组,逐个访问数组内的对象select(.browser_download_url | endswith("ghostpdl-10.01.1.tar.xz")):筛选出browser_download_url字段以目标文件名结尾的对象(用endswith比contains更精确,避免匹配到相似文件名)| .browser_download_url:从筛选出的对象中提取最终需要的URL字段
为什么之前的命令无效
你之前用的jq '.[].url' github.json问题在于:
- 目标URL存储在
assets数组下的browser_download_url字段,而非顶级的url字段 - 没有做筛选,直接遍历顶层数组(但顶层结构里并没有直接的
url字段对应目标内容)
如果不需要精确匹配后缀,也可以用contains来匹配关键词:
jq '.assets[] | select(.browser_download_url | contains("ghostpdl-10.01.1.tar.xz")) | .browser_download_url' github.json
内容的提问来源于stack exchange,提问作者slyfox1186
相关产品推荐
相关产品推荐

