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

如何使用sed提取字符串中第一个斜杠/之前的内容

问题原因

原有sed命令返回错误结果,核心是正则默认的贪婪匹配特性:正则中的.*会尽可能匹配最长的符合规则的字符串,因此\(.*\)\/会匹配到字符串里最后一个斜杠的位置,第一个捕获组拿到的就是最后一个斜杠前的全部内容a/b,不符合预期。

可行实现方案

以下任意一种命令执行后,都能正确返回第一个斜杠前的内容a:

  • 最简sed写法:直接删除第一个斜杠及之后的所有内容
    echo 'a/b/c' | sed 's/\/.*//'
    
  • 语义最直观的cut写法:指定斜杠为分隔符,直接取分割后的第一个字段
    echo 'a/b/c' | cut -d '/' -f 1
    
  • 修正后的sed分组捕获写法:从字符串开头匹配所有连续的非斜杠字符作为捕获组,替换整行为捕获组内容
    # 加-E参数启用扩展正则,不需要额外转义分组括号
    echo 'a/b/c' | sed -E 's/^([^/]+)\/.*/\1/'
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 10:45:30