Regex 如何使用VIM删除第一个字符串结束后的所有字符串?
我有一个5174行的文件。以下是这些行的显示方式:Regex 如何使用VIM删除第一个字符串结束后的所有字符串?,regex,vim,Regex,Vim,我有一个5174行的文件。以下是这些行的显示方式: JAMES 1.664 1.664 1 约翰1.6423.305 2 罗伯特1.576 4.881 3 迈克尔1.321 6.202 4 玛丽1.319 7.5215 威廉1.230 8.750 6 大卫1.1859.934 7 理查德0.854 10.788 8 查尔斯0.765 11.552 9 约瑟夫0.70512.25710 托马斯0.692 12.948 11 帕特里夏0.539 13.486 12 克里斯托弗0.51914.005
JAMES 1.664 1.664 1
约翰1.6423.305 2
罗伯特1.576 4.881 3
迈克尔1.321 6.202 4
玛丽1.319 7.5215
威廉1.230 8.750 6
大卫1.1859.934 7
理查德0.854 10.788 8
查尔斯0.765 11.552 9
约瑟夫0.70512.25710
托马斯0.692 12.948 11
帕特里夏0.539 13.486 12
克里斯托弗0.51914.005 13
琳达0.51814.52314
芭芭拉0.490 15.013 15
我在VIM中使用:
:s/^\s*//g
这不起作用。如何删除每行第一个字符后的所有字符?您可以在vim中使用此选项:
:%s/\([^[:blank:]]\+\).*/\1/
\([^[:blank:][]\+\)
将在第一个空格前匹配和分组文本,而后面的引用将替换该空格。\1将有多种方法可以剥除这只猫的皮
替换为:
:%s/\w\+\zs.*
带:正常:
:%norm! f D
您已经有了解决方案,但宏也可以作为一种方法:
qqelDj0q
- qq开始在
q
寄存器中录制宏
- 在单词的末尾加一个字符
- D删除行的末尾
- j0在底线的开头
- 停止录制宏
然后您可以执行5174@q
在正常模式下重播5174次宏并删除所有行。输出?我不知道你是想要J
还是JAMES
作为第一行。你能纠正我在JAMES开头和结尾添加这些字符的错误吗?那么,让我看看我是否理解正确:%s是搜索和替换,([^[:blank:]\+).*是否以1个或多个空格开头,后跟任意字符0次或多次,\1表示与第一个字符串中转义括号中的字符串相同?我单击了向上箭头,但我需要15或更高的声誉。我有一个新账户,那么,我怎么才能把这个标记为已回答?你对我问题的第二部分有什么想法吗?你能纠正我错误地将这些字符添加到詹姆斯的开头和结尾吗?我问了一个新问题。你能纠正我错误地将这些字符添加到詹姆斯的开头和结尾吗?