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

如何使用sed单次命令移除路径开头的./或../前缀?

用单次sed命令移除路径开头的./或../

没问题,你完全可以用一条sed命令搞定两种前缀的移除,不用分开写两条。这里给你两个实用的写法,按需选就行:

方法1:明确匹配两种前缀

直接用正则分支匹配./或../,替换成空字符串:

sed -E 's/^(\.\/|\.\.\///' your_file.txt

简单解释下:

  • -E 开启扩展正则,这样不用额外转义括号和竖线,写起来更清爽
  • ^ 锚定行开头,确保只替换路径最前面的前缀,不会误改中间出现的类似字符串
  • (\.\/|\.\.\// 精准匹配两种开头:要么是./,要么是../
  • 替换部分留空,就把匹配到的前缀直接删掉了

方法2:更紧凑的正则写法

如果觉得上面的分支不够简洁,也可以用数量词来简化:

sed -E 's/^\.{1,2}\///' your_file.txt

这个写法更凝练:

  • ^\.{1,2} 匹配行开头的1个或2个点(对应.或..)
  • \/ 匹配点后面的斜杠
  • 合起来就是匹配./或../,效果和第一种完全一样

测试效果示例

假设你的your_file.txt内容是:

./docs/readme.md
../src/utils.py
./tests/unit/test_auth.py
../config/dev.env
normal/path/file.txt

运行上面任意一条命令后,输出会变成:

docs/readme.md
src/utils.py
tests/unit/test_auth.py
config/dev.env
normal/path/file.txt

完全不会影响那些没有特殊前缀的正常路径。

如果需要直接修改原文件(操作前建议备份),可以加上-i参数:

# Linux环境
sed -i -E 's/^\.{1,2}\///' your_file.txt

# MacOS环境(需要加空字符串参数避免生成备份文件)
sed -i '' -E 's/^\.{1,2}\///' your_file.txt

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 07:33:32