如何用shell脚本或curl提取文本文件中REST API返回的value字段值
实现自动提取value字段并保存的方案
方案1:使用jq(推荐,JSON解析稳定性最高)
jq是命令行专用的JSON处理工具,适配Linux/macOS/WSL/Git Bash环境,解析逻辑严格符合JSON规范,不会受字段顺序、换行等格式变化影响。
- 直接调用API一步完成提取保存的命令:
curl <你的API请求地址> [原有curl请求参数,如请求头、认证信息等] | jq -r '.value' > <目标保存文件路径>
命令说明:-r参数用于输出原始字符串,自动去掉JSON字段的外层引号,输出结果完全匹配需求。 - 从已保存的本地响应文件提取的命令:
jq -r '.value' c:/rest_api/response.txt > c:/rest_api/extracted_value.txt
执行后会在c:/rest_api/路径下生成extracted_value.txt,文件内容就是纯value字段值。
方案2:无jq环境应急方案(sed正则匹配)
如果无法安装jq,可以用正则匹配提取,仅适配你当前这种结构固定的简单JSON:
- 直接调用API一步完成提取保存的命令:
curl <你的API请求地址> [原有curl请求参数] | sed -n 's/.*"value":"\([^"]*\)".*/\1/p' > <目标保存文件路径> - 从已保存的本地响应文件提取的命令:
sed -n 's/.*"value":"\([^"]*\)".*/\1/p' c:/rest_api/response.txt > c:/rest_api/extracted_value.txt
注意:该方案仅适配当前JSON结构,若后续API返回的JSON格式调整(如新增换行、字段顺序变化)可能失效,优先选择jq方案。
Windows原生PowerShell适配方案
如果使用Windows原生PowerShell无需安装额外工具,可直接使用系统自带命令:
# 直接调用API提取保存 Invoke-RestMethod -Uri "<你的API请求地址>" [其它请求参数] | Select-Object -ExpandProperty value | Out-File -FilePath c:/rest_api/extracted_value.txt -Encoding UTF8 # 从本地响应文件提取保存 Get-Content c:/rest_api/response.txt | ConvertFrom-Json | Select-Object -ExpandProperty value | Out-File -FilePath c:/rest_api/extracted_value.txt -Encoding UTF8
内容的提问来源于stack exchange,提问作者Symonds
相关产品推荐
相关产品推荐

