我想用其他方式替换crontab中的*/5 * * * *
(在我的情况下,我将整个crontab用管道传输到文件中,并希望完全删除这些部分以使其可作为Shell脚本执行)
我尝试了例如:
:%s/*\/5 * * * *//g
->仅替换*/5
部分,但保留* * * *
有人可以在这里帮助我吗?
答案 0 :(得分:1)
:help :substitute
中的offset
是一个正则表达式;您不能简单地按原样插入文字搜索文本,而必须转义内容。特别是,您的命令中存在两个问题:
{pattern}
中使用默认的/
分隔符,但是在模式(:substitute
)中也有此字符。 */5
需要转义(/
),或者您需要选择另一个分隔符(可以使用任何非字母数字的非空白ASCII字符,例如\/
)。:%s#...#...#g
是多项(:help /star
);除非它被转义,否则它本身不匹配,但表示前一个原子的多重性。同样,您可以转义每个实例(*
),也可以将整个正则表达式切换为Vim中的“非常不可思议”模式,这意味着大多数字符都失去了特殊的含义,并按字面意义使用(反斜杠,仍然需要转义); :help /\V
\*
标志。要进一步确定模式,可以在前面添加“行首”锚点(/g
)。这并不重要,但是可以防止意外的比赛。^
的重复可以重写为*
(任意重复)或\( \*\)\+
(恰好四次)。 (尽管我不建议在您的示例中使用它,因为这会使它更加复杂并且不会保存键入内容。)因此,这是两个变体(转义/不同的定界符和非常虚幻的模式):
\( \*\)\{4}