如何修剪前导 0,而不是在带有“sed”的字母数字字符串的开头

how to trim leading 0, not at beginning of alphanumeric string with `sed`

提问人:nd34567s32e 提问时间:7/19/2023 最后编辑:nd34567s32e 更新时间:8/14/2023 访问量:60

问:

举个例子:

A10
A01
A1
B09
B80
C11

如何使用 ?sed

源示例的预期结果:

A10
A1
A1
B9
B80
C11

^[0] 在这里不适用,因为它不是字符串的开头。匹配 [A-Z][0] 可以工作,但需要结果来保留 [AZ],我不知道该怎么做。

SED 微调 Leading-Zero

评论

0赞 markp-fuso 7/19/2023
请用你尝试过的代码的几个示例来更新问题,以及你的代码生成的(错误)结果
0赞 user1934428 7/19/2023
idownvotedbecau.se/nocode
0赞 nd34567s32e 8/15/2023
对不起,没有例子,有 ~100 个bash_history列表,不记得什么是坏的/关闭/不关闭的。现在只有解决方案对我来说很重要。

答:

2赞 RomanPerekhrest 7/19/2023 #1

使用 sed 替换:

sed -E 's/^([A-Z])0?([0-9]+)/\1\2/' test.txt
  • 0?- 在捕获的组之间匹配可选的零

A10
A1
A1
B9
B80
C11

评论

0赞 nd34567s32e 7/19/2023
感谢@RomanPerekhrest和@markalex——这些都符合我的需求。相信版本更完整。此外,我在尝试中缺少一个具体而必要的部分。0?\1\2