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

如何用sed去除字母后数字的前导零(非字符串开头零)

使用sed去除字母后数字的前导零

直接用下面的sed命令就能实现需求:

sed 's/\([A-Z]\)0*\([1-9][0-9]*\)/\1\2/'

命令解释

  • \([A-Z]\):捕获开头的单个大写字母,这个分组会被保存为\1,替换时直接引用就能保留原字母。
  • 0*\([1-9][0-9]*\):匹配字母后紧跟的所有前导零(0*表示0个或多个零),然后捕获从第一个非零数字开始的完整数字部分([1-9][0-9]*确保不会把全零的情况误处理),这个部分保存为\2。
  • 替换动作\1\2:把捕获的字母和去前导零后的数字拼接,得到目标结果。

验证示例

输入:

A10
A01
A1
B09
B80
C11

执行命令后输出:

A10
A1
A1
B9
B80
C11

针对你遇到的困惑补充

  • ^[0]不适用是因为你的场景里前导零不在字符串开头,而是在字母之后,所以开头锚定^没用。
  • 之前尝试[A-Z][0]只匹配了单个字母加单个零,而且没有用分组捕获来保留字母,用\([A-Z]\)把字母单独捕获后,替换时就能直接复用,不用重新写死字母,适配所有大写字母开头的情况。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 12:14:57