如何用sed仅在指定分号后的数字间插入分号?
解决方案
要实现只在第一个分号后的数字之间插入分号,同时避免修改标识符部分和在行尾添加多余分号,可以使用以下sed命令:
sed -E ':a; s/(;[0-9])([0-9])/\1;\2/; ta'
命令解释
:a:定义一个名为a的循环标记s/(;[0-9])([0-9])/\1;\2/:匹配分号后紧跟两个连续数字的模式,将其替换为分号+第一个数字+分号+第二个数字,只处理分号后的数字串,不会影响前面的sp16标识符ta:如果上一步替换操作成功,就跳回到标记a继续循环,直到所有连续数字都被处理完毕
验证效果
执行以下命令:
echo "sp16;111111111111111111111111111111211" | sed -E ':a; s/(;[0-9])([0-9])/\1;\2/; ta'
输出结果:
sp16;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;2;1;1
完全符合需求,既不会在第一个分号前插入分号,也不会在行尾添加多余的分号。
内容的提问来源于stack exchange,提问作者MrLungo
相关产品推荐
相关产品推荐

