sed / vi中的多行正则表达式替换

时间:2013-05-15 20:10:16

标签: regex replace newline

我需要在带有正则表达式的named.conf中替换此语句

masters {
        10.11.2.1;
        10.11.2.2;
};

我使用sed / vi的所有方法都不起作用

%s/masters.*\}\;//g 

不匹配。还尝试用/ s \ s等来匹配换行符。

1 个答案:

答案 0 :(得分:1)

在vim中,您force a pattern to match across newlines可以使用\_,例如:

%s/masters {\_[^}]*};//g

如果您使用.*作为前缀,那么将[^}]*替换为\_更保守的内容非常重要,因为*是贪婪的,所以\_.*会尝试将所有内容匹配到文档的末尾。