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

如何用jq从JSON的hrefFull提取内容赋值给hrefSimple和hrefSubsite

使用jq从hrefFull字段生成hrefSimple和hrefSubsite字段的正确实现

针对Azure App Insights导出的页面浏览量JSON数组,以下是符合需求的jq解决方案,可正确生成hrefSimple和hrefSubsite字段,解决对象4-6的取值错误问题。

核心jq命令

jq 'map(. + {
  hrefSimple: (.hrefFull | 
    if test(".*articles.*") then
      capture("articles.*") .0
    else
      split("/")[-1]
    end
  ),
  hrefSubsite: (.hrefFull |
    if test(".*/articles") then
      sub("^https://docs.mysite.com/"; "") | split("/articles")[0]
    else
      sub("^https://docs.mysite.com/"; "") | split("/") | .[0:-1] | join("/")
    end // ""
  )
})' input.json > output.json

逻辑说明

hrefSimple生成规则

  1. 检查hrefFull是否包含articles字符串:
    • 包含则提取从articles开始的所有后续内容
    • 不包含则取URL最后一个/之后的内容

hrefSubsite生成规则

  1. 检查hrefFull是否包含/articles子串:
    • 包含则提取https://docs.mysite.com/与/articles之间的路径部分
    • 不包含则提取https://docs.mysite.com/到最后一个/之间的路径部分(无中间路径则返回空字符串)

7个示例验证

以下为输入输出的对应示例:

  1. 输入

    {"hrefFull": "https://docs.mysite.com/subsite1/articles/getting-started"}
    

    输出

    {
      "hrefFull": "https://docs.mysite.com/subsite1/articles/getting-started",
      "hrefSimple": "articles/getting-started",
      "hrefSubsite": "subsite1"
    }
    
  2. 输入

    {"hrefFull": "https://docs.mysite.com/articles/overview"}
    

    输出

    {
      "hrefFull": "https://docs.mysite.com/articles/overview",
      "hrefSimple": "articles/overview",
      "hrefSubsite": ""
    }
    
  3. 输入

    {"hrefFull": "https://docs.mysite.com/subsite2/subsite3/articles/guide"}
    

    输出

    {
      "hrefFull": "https://docs.mysite.com/subsite2/subsite3/articles/guide",
      "hrefSimple": "articles/guide",
      "hrefSubsite": "subsite2/subsite3"
    }
    
  4. 输入

    {"hrefFull": "https://docs.mysite.com/subsite1/faq"}
    

    输出

    {
      "hrefFull": "https://docs.mysite.com/subsite1/faq",
      "hrefSimple": "faq",
      "hrefSubsite": "subsite1"
    }
    
  5. 输入

    {"hrefFull": "https://docs.mysite.com/home"}
    

    输出

    {
      "hrefFull": "https://docs.mysite.com/home",
      "hrefSimple": "home",
      "hrefSubsite": ""
    }
    
  6. 输入

    {"hrefFull": "https://docs.mysite.com/subsite2/tools/editor"}
    

    输出

    {
      "hrefFull": "https://docs.mysite.com/subsite2/tools/editor",
      "hrefSimple": "editor",
      "hrefSubsite": "subsite2/tools"
    }
    
  7. 输入

    {"hrefFull": "https://docs.mysite.com/articles/reference/api"}
    

    输出

    {
      "hrefFull": "https://docs.mysite.com/articles/reference/api",
      "hrefSimple": "articles/reference/api",
      "hrefSubsite": ""
    }
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 07:10:26