在 vi 中替换 .*

在 vi 中替换 .*

我需要替换所有出现的“句点星号”,如下所示:

blah blah .*:.*:.* blah blah

和:

[0-9][0-9]:[0-9][0-9]:[0-9][0-9]

最终结果如下所示:

blah blah [0-9][0-9]:[0-9][0-9]:[0-9][0-9] blah blah

我尝试了以下不同的变体,但没有成功:

%s_ .*:.*:.* _ [0-9][0-9]:[0-9][0-9]:[0-9][0-9] _g

答案1

您给出了一个带有“句点星号”的行的示例,该行重复了三次,并用冒号分隔。如果您的数据总是这样,您不妨坚持使用亚历克斯·P的回答。但你的问题 您需要替换所有出现的“句点星号”。如果说陈述问题的正确性,你应该使用

:%s/\.\*/[0-9][0-9]/g

即使“句号星号”不以三个为一组出现,它也会查找并替换它。

答案2

对于维姆::%s/\.\*:\.\*:\.\*/[0-9][0-9]:[0-9][0-9]:[0-9][0-9]/g

为了sedsed -e 's/\.\*:\.\*:\.\*/[0-9][0-9]:[0-9][0-9]:[0-9][0-9]/g'

  • %意味着在所有行上应用替换;sed默认情况下,命令应用于所有行时不需要。
  • \.是一个句点;裸露.意味着任何字符。
  • \*是一个星号;裸露*意味着 0 个或多个前面的原子。

答案3

在 Vim 中使用模式nomagic修饰符:\M

:%s/\M.*/[0-9][0-9]/g

这将消除模式中和\M的特殊性。.*

:help magic在维姆中。

相关内容