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

如何在Bash中替换特定字符:将_v转空格、最后一个点转短横线

正确的字符串替换实现方法

针对原始字符串src-env-package_v1.0.1.18,要完成两个替换需求:将_v替换为空格,将最后一个英文句点.替换为短横线-,可以使用以下组合sed命令实现:

echo "src-env-package_v1.0.1.18" | sed -e 's/_v/ /' -e 's/\.\([^.]*\)$/-\1/'

命令解释

  • 第一个替换规则 s/_v/ /:精准匹配字符串_v并替换为空格,不会像tr '_v' ' '那样单独替换每个_和v,避免破坏原字符串中的env等包含v的子串。
  • 第二个替换规则 s/\.\([^.]*\)$/-\1/:
    • \.\([^.]*\)$ 匹配字符串末尾的最后一个英文句点,以及句点后所有非句点字符;
    • -\1 将匹配部分替换为短横线加上捕获到的句点后内容,实现最后一个句点转短横线的效果。

为什么之前的方法出错

  • 使用sed 's/_v/ /'只完成了第一个替换,没处理最后一个句点的转换;
  • tr '_v' ' '是单个字符替换工具,会把所有_和v都换成空格,导致原字符串中env的v被替换,出现src-en -package的错误输出。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 12:48:29