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

无需grep -P参数,如何实现相同的JSON索引数值提取效果

问题描述

原本使用以下命令可从目标JSON中提取出数值21:

cat json | grep -Po '(?<=Inne","index":)(.*?)(?=,)'

但我的设备是蓝光播放器的嵌入式系统,不支持grep的-P参数,也无法安装jq,仅能使用grep的-E参数、awk或sed,请问如何实现相同的提取结果?

相关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}]}
解决方案

方法1:使用grep -E

通过扩展正则表达式两次过滤,精准提取目标数值:

grep -E '"name":"Inne","index":[0-9]+' json | grep -Eo '[0-9]+'

方法2:使用awk

匹配包含"name":"Inne"的片段,通过分割字段提取数值:

awk -F '[,:}]' '{for(i=1;i<=NF;i++){if($i~/"name":"Inne"/){print $(i+2)}}}' json

方法3:使用sed

利用替换功能匹配目标片段,仅保留需要的数值:

sed -n 's/.*"name":"Inne","index":\([0-9]*\),.*/\1/p' json

内容的提问来源于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 11:01:10