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

如何用grep/awk提取JSON指定项index值并整合到curl脚本

实现从JSON接口提取指定条目index值的Shell脚本方案

需求说明

从getsubtitlemenulist接口返回的JSON数据中,提取name为"Inne"的条目对应的index值,将其赋值给变量$NUMER,并传入后续的curl请求。环境仅支持grep、awk等基础命令,无法使用jq、Python工具。

接口返回JSON示例

{"success":true,"msg":"","file_path":"","subtitle_list":[{"name":"Wył.","index":0,"selected":false},{"name":"1/21 Duński","index":1,"selected":false},{"name":"2/21 Niemiecki","index":2,"selected":false},{"name":"3/21 Angielski","index":3,"selected":false},{"name":"4/21 Hiszpański","index":4,"selected":false},{"name":"5/21 Francuski","index":5,"selected":false},{"name":"6/21 Włoski","index":6,"selected":false},{"name":"7/21 Niderlandzki","index":7,"selected":false},{"name":"8/21 Norweski","index":8,"selected":false},{"name":"9/21 Fiński","index":9,"selected":false},{"name":"10/21 Szwecki","index":10,"selected":false},{"name":"11/21 Angielski","index":11,"selected":false},{"name":"12/21 Niemiecki","index":12,"selected":false},{"name":"13/21 Angielski","index":13,"selected":false},{"name":"14/21 Hiszpański","index":14,"selected":false},{"name":"15/21 Francuski","index":15,"selected":false},{"name":"16/21 Włoski","index":16,"selected":false},{"name":"17/21 Niemiecki","index":17,"selected":false},{"name":"18/21 Hiszpański","index":18,"selected":false},{"name":"19/21 Francuski","index":19,"selected":false},{"name":"20/21 Włoski","index":20,"selected":false},{"name":"Inne","index":21,"selected":true}]}

实现方案

利用grep定位目标条目,再用awk提取对应index值:

  1. 用grep -o精准匹配包含"name":"Inne"的整条对象内容,避免跨条目误匹配
  2. 两次使用awk分割字符串,提取出index后的纯数字值

核心命令组合:

curl -s "$ip/getsubtitlemenulist?" | grep -o '{"name":"Inne","index":[0-9]*,"selected":[a-z]*}' | awk -F'"index":' '{print $2}' | awk -F',' '{print $1}'

完整脚本

#!/bin/bash

# 调用接口并提取目标index值
NUMER=$(curl -s "$ip/getsubtitlemenulist?" | grep -o '{"name":"Inne","index":[0-9]*,"selected":[a-z]*}' | awk -F'"index":' '{print $2}' | awk -F',' '{print $1}')

# 确认获取到值后执行后续请求
if [ -n "$NUMER" ]; then
    curl "$ip/setsubttmenulist?%7B%22cur_index%22%3A$NUMER%7D"
fi

细节说明

  • curl添加-s参数,屏蔽进度输出避免干扰结果
  • 两次awk分别完成index字段的拆分和后续冗余内容的剔除
  • 增加$NUMER非空判断,确保仅在成功提取到有效值时触发后续请求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 10:05:30