我有一个文本文件,其中列出了目录中的文件名(以下摘录)。项目名称是f后跟3位数字。
771M Jan 22 02:35 f186
1.2G Jan 22 02:35 f172
771M Jan 22 02:36 f206
771M Jan 22 02:37 f151
771M Jan 22 02:37 f029
1.2G Jan 22 02:38 f162
771M Jan 22 02:40 f168
1.2G Jan 22 02:42 f244
...
我想要一个仅 3位数字的列表。因此,我需要通过“无”替换前面的列。由于前几行的内容对于每一行都是不同的,因此我将使用星号,并且以下方法在VIM中对我来说似乎是合乎逻辑的:
:%s/*f/
我将所有后跟的f都替换为空。
为什么这行不通?如何在VIM中做到这一点?
答案 0 :(得分:7)
Vim使用正则表达式,在正则表达式中,星号实际上是一个量词。
您想要的是什么
:%s/.*f/
.
字符表示任何字符,而*
表示任意数量的.
。因此,组合.*
基本上可以匹配任何您想要的东西。
正则表达式同时是我所学到的最有用和最讨厌的东西,所以我建议您熟悉它们。