如何使用sed为CSV文件中所有8位数字的第4位后插入逗号
sed修复CSV缺失逗号方案
核心命令
使用扩展正则实现精准匹配8位数字插入逗号,兼容Linux、macOS环境:
# 仅预览修改效果,不改动原文件 sed -E 's/(^|[^0-9])([0-9]{4})([0-9]{4})($|[^0-9])/\1\2,\3\4/g' 你的文件名.csv # 直接修改原文件并自动生成.bak后缀的备份(安全操作) sed -i.bak -E 's/(^|[^0-9])([0-9]{4})([0-9]{4})($|[^0-9])/\1\2,\3\4/g' 你的文件名.csv
实现逻辑
- 正则
(^|[^0-9])匹配8位数字的前置边界:要么是行首,要么是非数字字符(对应CSV的逗号分隔符) ([0-9]{4})([0-9]{4})精确匹配连续8位数字,拆分为前4位、后4位两个分组($|[^0-9])匹配8位数字的后置边界:要么是行尾,要么是非数字字符- 替换时保留前后边界,仅在两个数字分组中间插入逗号
- 仅作用于恰好8位的连续数字串,不会影响1-5位的合法字段,完全规避误修改问题
处理后你示例中的错误行12825,64751200,-357...会被修正为12825,6475,1200,-357...,其他行的正常字段不会有任何改动。
内容的提问来源于stack exchange,提问作者Lucia
相关产品推荐
相关产品推荐

