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.
假设您的光标位于第一行第一列。字段也具有相同的宽度(如您的示例所示)
您可以按以下键序列(6 次击键):
<Ctrl-V>G3f,x
如果字段的长度不同,您可以:
录制宏q
:
qq0v3f,xjq
然后,重播宏,例如 99 次:
99@q
或在命令行中执行:
%s/\v^([^,]*,){3}//
您可以使用cut
,使用分隔符选项d,
(设置,
为分隔符),然后选择您想要-f4-
的(从 4 到结尾的所有字段...)
问题是*
修饰符是贪婪的,即它匹配它可以获得的所有字符。
将值限制为除逗号分隔符:[^,]
之外的任何字符
:%s/^\([^,]*,\)\{3}//
或使用非贪婪变体.\{-}
:
:%s/^\(.\{-},\)\{3}//
对于逗号分隔值 (CSV) 文件处理,您可能还对提供命令的csv.vim 插件感兴趣。:DeleteColumn