You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Bash提取GitHub API返回JSON的第一个键?

提取GitHub仓库语言API返回JSON的第一个键

推荐方案:用jq处理JSON(更可靠)

正则不是处理JSON的最佳选择,JSON结构的微小变化(比如空格、换行)都可能导致正则失效。推荐用专门的JSON处理工具jq,它能稳定提取第一个键:

修改你的脚本如下:

LANGUAGES=$(curl \
  --request GET \
  --header 'authorization: Bearer ${{ secrets.GITHUB_TOKEN }}' \
  --header 'content-type: application/json' \
  --url 'https://api.github.com/repos/${{ github.repository }}/languages'
)
# 提取第一个键(保留GitHub返回的原始顺序)
echo "$LANGUAGES" | jq -r 'keys_unsorted[0]'
  • keys_unsorted:保留JSON对象键的原始顺序(GitHub返回的语言顺序是按代码行数从多到少排列的)
  • [0]:取第一个键
  • -r:输出不带引号的原始字符串

备选方案:用正则提取(不推荐)

如果环境中无法安装jq,可以用正则匹配第一个带引号的键:

用grep实现:

echo "$LANGUAGES" | grep -oP '^\s*"([^"]+)"' | cut -d'"' -f2

用sed实现:

echo "$LANGUAGES" | sed -n 's/^\s*"\([^"]*\)".*/\1/p'

原理:匹配开头的任意空白字符,然后捕获第一个被双引号包裹的字符串,提取捕获内容。注意:如果JSON格式有变动(比如第一个键不在第一行),这个正则会失效。

内容的提问来源于stack exchange,提问作者nish

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 23:31:24