首页 > 解决方案 > 只替换1个前导零,如果超过1次则丢弃它

问题描述

我想用@替换正好1个前导零,如果找到2个或更多前导零然后丢弃它。

0123
00123
000123
123

输出:

@123
00123
000123
123

我努力了

sed 's/^0.\{1\}/@/' file

注意:请考虑每行文件中的上述 4 条记录。

标签: regexshellunixsedsh

解决方案


您应该在示例输入中的自己的行中包含一个 0,因为这是一个可能会错过的边缘情况:

$ cat file
0123
00123
000123
123
0

$ sed -E 's/^0([^0]|$)/@\1/' file
@123
00123
000123
123
@

以上将适用于任何可以-E选择使用 ERE 的 sed,例如 GNU sed 和 BSD/OSX sed。


推荐阅读