String Vim替换第一个逗号之前的所有字符

String Vim替换第一个逗号之前的所有字符,string,vim,replace,String,Vim,Replace,我正在尝试使用VIM替换大文本文件(10mb+)中第一个逗号之前的所有字符 我有一些东西看起来像: foo,bar,sun apple,pear,goose monkey,pig,baby 我希望它看起来像: bar,sun pear,goose pig,baby 这应该做到: [esc]:%s:^[^,]*,:: 编辑:当然,您也可以使用剪切: cut -d , -f 2- < mybigfile.txt > newfile.txt cut-d,-f2-newfile.tx

我正在尝试使用VIM替换大文本文件(10mb+)中第一个逗号之前的所有字符

我有一些东西看起来像:

foo,bar,sun
apple,pear,goose
monkey,pig,baby
我希望它看起来像:

bar,sun
pear,goose
pig,baby
这应该做到:

[esc]:%s:^[^,]*,::
编辑:当然,您也可以使用剪切:

cut -d , -f 2- < mybigfile.txt > newfile.txt
cut-d,-f2-newfile.txt

下面的步骤应该可以做到

:%s/^[^,]*,//
说明:

  • :命令模式
  • %适用于每一行
  • 代用品
  • /匹配
    • ^从一开始
    • [^,]逗号以外的任何字符
    • *(参见前面的)重复的或空的
    • ,逗号
  • /替换
    • 没什么
  • /完成
或者,您可以使用sed:

sed 's/^[^,]*,//' -i FILENAME


编辑:次要格式和解释:“

:%s/\{-},//

此版本使用非贪婪量词
\{-}
,使前面的点匹配0次或更多次,但尽可能少(因此它是非贪婪的)

这类似于在大多数其他正则表达式风格中使用
*?

您可以使用

:%norm df,
要在文件中的每一行上运行正常命令
df,
。它从行的开头删除第一个逗号(包括第一个逗号)

阅读
:help:normal

您说的是“替换”,但实际上是在删除字符。
:%norm df,