我有一个包含数千行文本的文本文件。每一行都以
结尾。\\server\share\file.txt -> information
我想删除文件扩展名后的空格后面的所有内容,也就是在“ ->”之后的一切(第一个引号后有一个空格)。我想使用vim来完成此任务,因为我正在尝试更多地了解它,但任何程序都可以; 我希望能够尽快完成这个任务。
您的描述是自相矛盾的。
您是否想保留箭头?
1可以通过以下方式轻松完成:
:%s/ ->.*/
而且实际上,如果您确实想在箭头前保留空格,就像您所说的那样,它应该是:
:%s/ ->.*/ /
可以用以下方式完成2:
:%s/\( ->\).*/\1/
如果你希望在替换之前查看搜索结果,可以先使用 / 构建搜索。
/\( ->\).*
这将高亮显示所有结果,以确保您替换正确的内容。然后,您可以使用空搜索词执行替换命令来使用最后一次搜索(已经高亮显示的内容)。
:%s//\1/
\(
和\)
。 - Benoit:%s/ ->\zs .*//
如果您想删除它:
:%s/ -> .*//
这可以很容易地使用分割方法完成。由于您的行都是相同的,并且有一个特殊的箭头->
符号,因此在该符号上进行分割,并获取第一个元素。
awk -F"->" '{print $1}' file
如果需要,重定向到新文件。
/(?= ->).*/
匹配并替换为空。\@<=
гҖӮдҫӢеҰӮпјҡ:%s/\( -> \)\@<=.*//
гҖӮиҝҳеҸҜд»ҘжҹҘзңӢ:help /\@<=
гҖӮ - Benoit -> .*
使用空字符串
(我假设您想删除->
,即使您说“之后”。)
(?!\.\w{2,3})(\s->\s\w+)$
来查找尾随文本,但不熟悉 vim 的正则表达式,无法制作“执行此行”类的解决方案。 - Brad Christie