如何在Bash中用grep提取REST API返回JSON的resources数组内容
实现方案
首先说明:grep本身是基于文本匹配的工具,不支持JSON结构解析,以下方案仅适用于你给出的场景(resources数组元素都是普通字符串,内部没有嵌套的[]结构),如果是复杂JSON结构更推荐用jq这类专用JSON处理工具。
纯grep提取原始内容
使用grep的PCRE正则模式即可完成提取,假设你的API返回内容存在文件resp.json中,命令如下:
grep -oP '"resources"\s*:\s*\[[^\]]+\]' resp.json
如果是直接处理curl的返回结果,直接用管道连接即可:
curl "你的REST API请求地址" | grep -oP '"resources"\s*:\s*\[[^\]]+\]'
参数解释:
-o:仅输出匹配到的片段,不输出整行其他内容-P:启用Perl兼容正则模式,支持更灵活的匹配规则- 正则规则:匹配
"resources"字段开头,跳过冒号前后的空白字符,匹配从[到第一个]之间的所有内容
输出带缩进的美化格式
如果你需要和示例一致的换行缩进效果,grep本身没有JSON格式化能力,可以配合系统自带的Python json工具实现,不需要额外安装依赖:
curl "你的REST API请求地址" | grep -oP '"resources"\s*:\s*\[[^\]]+\]' | python3 -m json.tool
如果你的系统只有Python2,把命令里的python3替换为python即可。
内容的提问来源于stack exchange,提问作者bmoreira2000
相关产品推荐
相关产品推荐

