VIM如何批量删除文件每一行内指定范围的字符
方案1:按指定字符位置精准删除
直接执行如下Vim命令即可实现需求:
:%s/^\(.\{20}\).\{10}/\1/
命令说明:
%代表对文件所有行执行替换操作^\(.\{20}\)匹配每行开头的前20个字符,存入分组1中.\{10}匹配接下来的10个字符,也就是你要求删除的第21到30位字符\1把匹配到的内容替换成分组1的内容,相当于只保留前20位,自动删除后续10位字符
如果需要逐行确认再替换,避免误操作,可以在命令末尾加c参数:
:%s/^\(.\{20}\).\{10}/\1/c
方案2:按内容特征匹配删除(更灵活)
针对你当前删除秒后毫秒与时区后缀的场景,还可以用内容匹配的方式实现,不受字符位置偏移影响:
:%s/\d\zs\.[^"]*//
命令说明:
\d匹配秒数的最后一位数字\zs标记替换操作的起始位置,也就是从后面的小数点开始才是要删除的内容\.[^"]*匹配小数点后所有直到双引号前的字符- 替换为空即可完成清理,和你要求的效果完全一致
内容的提问来源于stack exchange,提问作者Manikandaraj Srinivasan
相关产品推荐
相关产品推荐

