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

如何从URL中提取以addr1开头、截止到特殊字符的哈希地址

实现需求的sed规则

最终可用命令

echo "$url" | sed -n 's/.*\(addr1[^/?&]*\).*/\1/p'

规则说明

  • -n:关闭sed默认输出,只打印匹配替换成功的行
  • 匹配逻辑:
    1. 开头的.*匹配addr1之前的所有URL前缀内容
    2. 捕获组\( \)内的部分就是目标地址:
      • 固定匹配开头addr1
      • [^/?&]*匹配所有不属于/、?、&的字符,遇到第一个截断特殊字符就停止匹配,没有特殊字符则直接匹配到URL结尾
    3. 结尾的.*匹配地址之后的所有多余内容
  • 替换逻辑:将整行内容替换为捕获组提取到的地址,p参数控制替换成功后输出结果

测试效果

  1. 测试url1="https://some.com/ofthis/addr1vxu5xx7nyrqh9gku9530c9mme",输出:addr1vxu5xx7nyrqh9gku9530c9mme
  2. 测试url2="https://some.com/ofthis/addr1vxu5xx7nyrqh9gku9530c9mme/8638ffe0/moreof/that",输出:addr1vxu5xx7nyrqh9gku9530c9mme
  3. 测试带参数场景url3="https://some.com/addr1vxu5xx7nyrqh9gku9530c9mme?param=123&other=456",输出:addr1vxu5xx7nyrqh9gku9530c9mme

原有命令问题说明

  • 用了\(.*\)\/的贪婪匹配逻辑,会匹配到URL最后一个/,导致保留了多余的路径内容
  • 替换表达式里加了多余空格,导致输出结果有多余空格
  • 没有兼容addr1后面直接到URL结尾的场景,导致url1处理失败
  • 没有覆盖?、&等特殊截断字符的判断

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 17:57:02