Vim将所有字符替换为第一个逗号

时间:2014-11-20 00:50:29

标签: string vim replace

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

我有一些看起来像:

foo,bar,sun
apple,pear,goose
monkey,pig,baby

我希望它看起来像:

bar,sun
pear,goose
pig,baby

4 个答案:

答案 0 :(得分:10)

以下应该这样做

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

说明:

  • :命令模式
  • %适用于每一行
  • s替代
  • /匹配
    • ^从行的开头
    • [^,]逗号以外的任何字符
    • *(参见上一页)重复或清空
    • ,逗号
  • / replace
    • 没有
  • / finished

或者你可以使用sed:

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

sed 's/^[^,]*,//' FILENAME > NEWFILENAME

编辑:次要格式并解释":"

答案 1 :(得分:7)

您可以使用

:%norm df,

在文件的每一行上运行正常命令df,。从行的开头删除,包括第一个逗号。

阅读:help :normal

答案 2 :(得分:2)

这应该这样做:

[esc]:%s:^[^,]*,::

编辑:当然您也可以使用剪切:

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

答案 3 :(得分:2)

:%s/.\{-},//

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

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