3

我有一个文本文件正在尝试设置为导入到我的数据库中。我需要在行上的某个位置之后删除每行上的所有内容。我还需要在每行的多个固定位置插入逗号。最终目标是我将导入到我的数据库中的 csv 文件。

我假设有一个正则表达式或 VIM 命令可以按位置插入删除,但我对两者都很陌生,我的搜索没有提供好的答案。

4

1 回答 1

9

Vim 有一个特殊的正则表达式原子\%23c,可以匹配第 23 列。您也可以在此之前和之后进行匹配,请参阅:help /\%c. 这样,您可以通过以下方式实现目标:substitute:删除位置 115 之后的所有字符:

:%s/\%>115c.*//

在位置 10、20、30 处插入逗号:

:%s/\%10c\|\%20c\|\%30c/,/g

这是有效的,因为匹配本身是零宽度,即它不消耗该位置的字符。为此,您需要附加类似..

请注意,\%c原子适用于字符(准确地说是字节数)。要正确处理多字节和双宽字符、制表符等,您最好将其基于屏幕宽度:\%v是原子。

于 2013-08-08T19:04:58.407 回答