如果我们的搜索/替换模式包含多个正斜杠,如何在Vim / Linux中搜索和替换?

问题描述

我有10万行文件,每行包含日期12/13/2019。我想将该日期替换为12/20/2019。但是当我输入命令时:%s / 12/13/2019/12/20/2019 / g。它给出了找不到模式的错误。 日期格式为(MM / DD / YYYY)

解决方法

替换由几个部分组成:

:<range>s/<search>/<replace>/<flags>

在这些部分之间,您将/作为默认分隔符。由于/<search>部分与<replace>部分分开,因此您的搜索模式中的任何/都将被解释为分隔符,从而导致不良结果。

一种解决方案是用反斜杠转义您的斜杠:

:%s/12\/13\/2019/12\/20\/2019/g

另一个(我最喜欢的)是使用替代分隔符:

:%s@12/13/2019@12/20/2019@g

参考:

:help :s
:help pattern-delimiter