我有一个包含数千行文字的文本文件。每行结束如
\\server\share\file.txt -> information
我希望在文件扩展名结束后删除空格后面的所有内容。所以“ - >”之后的所有内容(第一次引用后有空格)
你会怎么做?我想使用vim,因为我试图更多地了解它,但任何程序都会这样做;我想尽快完成这项工作。
答案 0 :(得分:22)
您的描述是矛盾的。
你想要保留箭头吗?
1只需完成:
:%s/ ->.*/
实际上,如果你确实想要在箭头之前保留空间,就像你说的那样,那就是:
:%s/ ->.*/ /
2可以通过以下方式完成:
:%s/\( ->\).*/\1/
如果您希望在替换之前查看搜索结果,可以先使用/:
构建搜索/\( ->\).*
这将突出显示所有结果,以确保您正在替换正确的东西。然后,您可以使用空搜索词执行replace命令,以使用上次搜索(突出显示的内容)。
:%s//\1/
答案 1 :(得分:7)
如果你想保留箭头:
:%s/ ->\zs .*//
如果你想删除它:
:%s/ -> .*//
答案 2 :(得分:1)
积极的前瞻可能会起作用,类似于/(?= ->).*/
来匹配并替换为空虚。
答案 3 :(得分:1)
全球替换
-> .*
使用空字符串
(我假设您要删除->
,即使您说“之后”。)
答案 4 :(得分:1)
这可以使用分割方法轻松完成。由于你的线条都是一样的,并且有一个特殊的箭头->
符号,因此将其拆分并获得第一个元素
awk -F"->" '{print $1}' file
如果需要,可以重定向到新文件。