如何修改现有Sed命令删除目标ID后的指定空格?
问题与解决方案
原有命令与效果
原Sed命令用于给13位长度的ID前添加三个零:
sed 's/^\(\.{14}\)\([0-9]\{13\}[^0-9]\)/\1000\2/' file
输入示例:
A:AAAA:AA: :A:**0123456789ABC **:AAA:AAA : :AA: : :
执行原命令后的输出:
A:AAAA:AA: :A:**0000123456789ABC **:AAA:AAA : :AA: : :
修改需求
需要调整命令,仅删除上述处理过的记录中ID后的三个空格,不得删除其他位置的空格或整列(其他记录存在不同数据)。
解决方案
直接在原命令的匹配逻辑中,把ID后的三个空格纳入匹配范围,替换时排除这部分即可。修改后的命令如下:
sed 's/^\(\.{14}\)\([0-9]\{13\}\) \([^0-9]\)/\1000\2\3/' file
逻辑说明
- 原命令通过分组匹配前14个任意字符、13位数字及后续非数字字符,替换时在数字前插入
000。 - 修改后的命令将ID后的三个空格单独匹配出来,替换时只保留前14个字符、加了
000的ID,以及后续的非数字字符,跳过那三个空格,实现精准删除。
执行修改后命令的输出示例:
A:AAAA:AA: :A:**0000123456789ABC**:AAA:AAA : :AA: : :
内容的提问来源于stack exchange,提问作者Luis Meléndez
相关产品推荐
相关产品推荐

