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

Shell脚本中如何从curl返回的JSON提取指定字段值?

提取JSON字段值的几种Shell方法

没问题!在Shell脚本里从你拿到的JSON响应中提取availabilityTimestamp的值,有几种实用的方案,我给你详细说下:

1. 推荐:用jq工具(最可靠的JSON处理方式)

jq是专门用来处理JSON的命令行工具,能完美应对各种JSON格式的变化,是处理这类需求的首选。

首先确保你的系统上安装了jq:

  • Debian/Ubuntu系:sudo apt install jq
  • RHEL/CentOS系:sudo yum install jq

然后在脚本里这么写:

# 先获取API响应
response=$(curl your-api-endpoint-url)
# 提取目标字段的原始值(不带引号)
timestamp=$(echo "$response" | jq -r '.availabilityTimestamp')
# 验证提取结果
echo "提取到的时间戳:$timestamp"

这里的-r参数是让jq输出原始字符串,正好符合你要直接拿到2015-12-29T14:20:55Z的需求。

2. 无jq时的替代方案(用sed/awk,仅适用于固定格式的JSON)

如果没办法安装jq,可以用文本处理工具应急,但要注意:这种方法只适用于你给出的这种固定格式的JSON,如果JSON结构有变动(比如字段换行、空格调整),可能会失效。

用sed的写法:

response=$(curl your-api-endpoint-url)
timestamp=$(echo "$response" | sed -n 's/.*"availabilityTimestamp" : "\([^"]*\)".*/\1/p')

这个正则表达式会精准匹配"availabilityTimestamp" : "xxx"的结构,捕获并提取引号里的时间戳内容。

用awk的写法:

response=$(curl your-api-endpoint-url)
timestamp=$(echo "$response" | awk -F'"' '{print $4}')

这里用双引号作为分隔符,你的目标值正好在第4个分隔段里,所以直接取$4就能得到结果。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:26:05