实现扩展的正则表达式以根据字符串中的位置添加可变数量的前导零
我在将sed语法降低到将不同数量的前导零添加到数字组织方案时遇到麻烦。我正在操作的字符串看起来像 1.1.1.1,Some Text Here 利用sed语法 sed -r ":r;s/\b[0-9]{1,$((1))}\b/0&/g;tr" 我能够引起回应 01.01.01.01,Some Text Here 但是,我要寻找的东西是将字段2和3中的2位数字零填充,并将字段4中的3位数字零填充,以使所有项目的标准长度为[0-9]。[0-9] { 2}。[0-9] {2}。[0-9] {3} 1.01.01.001,Some Text Here 为了我的一生,我什至无法想像如何修改边界以包括必要的参数,以便仅在一个句点之后捕捉到数字。我认为这与\ b的使用有关,我理解\ b在单词边界匹配零个字符,但是我不明白为什么我为匹配添加句点的尝试失败如下: sed -r ":r;s/\.\b[0-9]{1,$((1))}\b/0&/g;tr" sed -r ":r;s/\b\.[0-9]{1,$((1))}\b/0&/g;tr" Both cause the statement to hang sed -r ":r;s/\b[0-9]\.{1,$((1))}\b/0&/g;tr" sed -r ":r;s/\b[0-9]{1,$((1))}\.\b/0&/g;tr" sed -r ":r;s/\b[0-9]{1,$((1))}\b\./0&/g;tr" cause the statement to output: 1.01.01.1,Some …