Vi编辑器正则清理畸形CSV:替换连续多分号、删除DOS换行符^M
操作步骤
- 移除所有DOS格式的^M控制符
在Vi的普通模式下输入以下命令,按回车执行:
:%s/\r//g
如果你需要手动输入^M字符,按Ctrl+V后再按Ctrl+M即可,输入完成后的命令为:
:%s/^M//g
- 替换连续多个分号为单个分号
执行以下命令即可匹配所有2个及以上连续的分号(不会命中单个分号),并替换为单个分号:
:%s/;\{2,}/;/g
正则说明
你要求的「匹配任意数量连续多个分号、不匹配单个分号」的正则为;\{2,}:
;匹配普通分号字符\{2,}是Vi正则的量词语法,限定前面的字符至少出现2次,因此只会匹配连续2个及以上的分号,完全不会匹配单个分号。
你也可以把两步操作合并为一条命令,执行效率更高:
:%s/\(\r\|;\{2,}\)/\=submatch(0) =~ ';' ? ';' : ''/g
内容的提问来源于stack exchange,提问作者Robert Alexander
相关产品推荐
相关产品推荐

