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

如何使用sed删除字符串中的单斜杠且保留双斜杠?

单斜杠删除需求实现方案

问题说明

你当前使用的str=echo $str | sed -r 's////g'`命令会匹配所有斜杠无差别删除,因此会把需要保留的双斜杠也一并清理,无法满足需求。

实现方法

方法1:扩展正则断言实现(推荐)

利用sed扩展正则的前后断言规则,仅删除独立的单个斜杠,不会影响连续出现的斜杠:

str=$(echo $str | sed -E 's#(?<!/)\/(?!/)##g')

参数说明:

  • -E 开启扩展正则支持(部分Linux发行版可替换为-r)
  • 用#作为sed替换分隔符,避免斜杠需要额外转义
  • (?<!/)\/(?!/) 正则含义为匹配前后都没有其他斜杠的独立单斜杠,仅删除这部分字符

如果你不需要保留3个及以上的连续斜杠,仅需要保留双斜杠,也可以简化为仅使用负向先行断言:

str=$(echo $str | sed -E 's#/(?!/)##g')

方法2:占位符兼容方案

如果运行环境的sed版本较低不支持正则断言,可以用临时占位符的逻辑实现:

str=$(echo $str | sed -e 's#//#TEMP_SLASH_PLACEHOLDER#g' -e 's#/##g' -e 's#TEMP_SLASH_PLACEHOLDER#//g')

执行逻辑:

  1. 先把所有双斜杠替换为不会在业务字符串中出现的临时占位符
  2. 批量删除所有剩下的单个斜杠
  3. 把临时占位符替换回双斜杠

效果验证

输入测试字符串/word1 /word2 //word3,上述两种方案执行后的输出均为word1 word2 //word3,符合预期要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 17:36:00