2
f1,f2,f3,f4,f5,,,,
f1,f2,f3,f4,f5,,,,
f1,f2,f3,f4,f5,,,,
f1,f2,f3,f4,f5,,,,

assuming fN it's some sequence of characters except ,.

How to remove first 3 fields?

so far I've tried %s/^.*,.*,.*,// but it removes whole line.

4

3 回答 3

4

假设您的光标位于第一行第一列。字段也具有相同的宽度(如您的示例所示)

您可以按以下键序列(6 次击键):

<Ctrl-V>G3f,x

如果字段的长度不同,您可以:

录制宏q

qq0v3f,xjq

然后,重播宏,例如 99 次:

99@q

或在命令行中执行:

%s/\v^([^,]*,){3}//
于 2013-07-16T11:39:12.817 回答
2

您可以使用cut,使用分隔符选项d,(设置,为分隔符),然后选择您想要-f4-的(从 4 到结尾的所有字段...)

于 2013-07-16T11:40:01.963 回答
2

问题是*修饰符是贪婪的,即它匹配它可以获得的所有字符。

将值限制为除逗号分隔符:[^,]之外的任何字符

:%s/^\([^,]*,\)\{3}//

或使用非贪婪变体.\{-}

:%s/^\(.\{-},\)\{3}//

选择

对于逗号分隔值 (CSV) 文件处理,您可能还对提供命令的csv.vim 插件感兴趣。:DeleteColumn

于 2013-07-16T11:42:24.280 回答