我有一个文本文件正在尝试设置为导入到我的数据库中。我需要在行上的某个位置之后删除每行上的所有内容。我还需要在每行的多个固定位置插入逗号。最终目标是我将导入到我的数据库中的 csv 文件。
我假设有一个正则表达式或 VIM 命令可以按位置插入删除,但我对两者都很陌生,我的搜索没有提供好的答案。
Vim 有一个特殊的正则表达式原子\%23c
,可以匹配第 23 列。您也可以在此之前和之后进行匹配,请参阅:help /\%c
. 这样,您可以通过以下方式实现目标:substitute
:删除位置 115 之后的所有字符:
:%s/\%>115c.*//
在位置 10、20、30 处插入逗号:
:%s/\%10c\|\%20c\|\%30c/,/g
这是有效的,因为匹配本身是零宽度,即它不消耗该位置的字符。为此,您需要附加类似.
.
请注意,\%c
原子适用于字符(准确地说是字节数)。要正确处理多字节和双宽字符、制表符等,您最好将其基于屏幕宽度:\%v
是原子。