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

Linux下使用Grep提取JSON中oid值失败问题排查

从JSON响应提取oid值并存入变量的问题解决

问题

要在Linux系统中,从存储于$Response变量的JSON内容里提取oid字段值并存入$oid变量。当前使用的命令如下:

oid= $Response | grep -Po '"oid": *\K"[^"]\*"'

执行后echo $oid显示为空,未能提取到目标值xyzxyzxyzxyzxyzxyzxyz。目标JSON简化版为:

{
"count": 1,
"items": [{
        "oid": "xyzxyzxyzxyzxyzxyzxyz",
        "creationDate": "2019-02-05T02:21:08.662+0000"
         }]
}

问题原因

  1. 变量赋值语法错误:oid= $Response中等号后不能有空格,且直接将$Response作为命令执行无法传递内容给grep,需用命令替换$(...)捕获输出,同时通过echo输出变量内容。
  2. 正则表达式错误:[^"]\*的*位置错误,应改为[^"]*;若$Response存储的是原生JSON(双引号而非"转义字符),正则里需用"替代"。
  3. 未处理引号:即使匹配成功,结果会包含双引号,需去除才能得到纯oid值。

修正后的命令

场景1:$Response存储原生JSON(双引号格式)

oid=$(echo "$Response" | grep -Po '"oid": *\K"[^"]*"' | tr -d '"')
  • echo "$Response":输出变量中的JSON内容
  • grep -Po '"oid": *\K"[^"]*"':用Perl兼容正则,\K忽略前面匹配的"oid": 部分,仅捕获"包裹的oid值
  • tr -d '"':移除结果中的双引号,得到纯字段值

场景2:$Response存储带"转义的内容

oid=$(echo "$Response" | grep -Po '"oid": *\K"[^"]*"' | tr -d '"')

验证

执行修正后的命令后,运行echo $oid,即可输出目标值xyzxyzxyzxyzxyzxyzxyz。

内容的提问来源于stack exchange,提问作者Chris.Ae

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 01:54:26