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

如何使用sed命令保留匹配字符,仅替换指定位置内容?

Sed 实现特定位置字符替换的正确姿势

首先看你的需求:要把字符串中123456开头的片段里,跳过后面3个字符,把再往后的3个字符替换成111,同时保留前面的固定前缀和中间的3个字符。你之前的命令没达到效果,是因为没用到捕获组来保留需要的内容,直接替换会丢失原有的中间字符。

正确的 Sed 命令

基础版本(兼容大多数 sed 版本)

sed 's/123456\(...\).../123456\1111/g'

扩展正则版本(更易读,需加 -E 参数)

如果你的 sed 支持扩展正则表达式(比如 GNU sed、BSD sed),可以用更清晰的写法:

sed -E 's/123456(...)(...)/123456\1111/g'

命令解释

咱们拆解一下这个正则的逻辑:

  1. 123456:精准匹配开头的固定6个字符
  2. (...):第一个捕获组,专门用来保留123456之后的3个字符(比如原字符串里的red、bee)
  3. 第二个...:匹配接下来需要被替换掉的3个字符(比如100、010)
  4. 替换部分123456\1111:\1代表引用第一个捕获组里保留的内容,后面直接接上111,这样就完美实现了「保留前缀+保留中间3字符+替换目标3字符为111」的需求。

举个例子,原字符串片段123456red100green会被匹配后,替换成123456red111green,完全符合你的要求。而且这个命令会全局替换(g标记),不管目标片段在文件的开头、中间还是结尾都能处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 07:09:38