Regex 在Vi编辑器中替换多行

Regex 在Vi编辑器中替换多行,regex,linux,unix,vi,Regex,Linux,Unix,Vi,这是文件中的一些文本行。我需要使用vi编辑器删除某些文本块 极光(复数:极光或极光)是天空中的一种自然光显示,特别是在高纬度(北极和南极)地区,由高能带电粒子与高空大气(热层)中的原子碰撞引起 我有一个像上面这样的输入文件。在这个文件中,我必须删除某些出现的文本块,如下所示 Most aurorae occur in a band known as the auroral zone[2][2] which is typically 3° to 6° in latitudinal extent a

这是文件中的一些文本行。我需要使用vi编辑器删除某些文本块

极光(复数:极光或极光)是天空中的一种自然光显示,特别是在高纬度(北极和南极)地区,由高能带电粒子与高空大气(热层)中的原子碰撞引起

我有一个像上面这样的输入文件。在这个文件中,我必须删除某些出现的文本块,如下所示

Most aurorae occur in a band known as the auroral zone[2][2] which is typically 3° to 6° in latitudinal extent and at all local times or longitudes.
因此,我正在使用以下命令,但该命令不起作用:

:g/^Most/,/auroral/,/longitudes./d

我正在删除从Most开始的线条,中间是极光,最后是经度。

您可以做的事情有明显的限制,但在上下文中,您可以使用:

:g/^while/.,/^}/d
删除
while
循环,其中
while
位于行首,直到行首的右大括号


你能给这个再加一些吗

:g/^while/
部件全局搜索以
while
开头的行。下面是为每个匹配行执行的
ex
命令。命令是
,/^}/d
,这意味着从当前行(
)到下一行,从右括号(
/^}/
)开始执行删除(
d
)。您还可以使用向后搜索或相对运动(
?^{
-3
+10
)等功能

从注释破损的外观很难准确地说出您的想法(不是您的错-注释没有保留有用的格式)

我需要将堆栈溢出替换为
-----------
[…]

这很简单,我看不出
对它有什么影响:

:g/^Stack Over Flow/.,/^-------/d

这与我的原始答案是同构的。

您可以做的事情有明显的限制,但在上下文中,您可以使用:

:g/^while/.,/^}/d
删除
while
循环,其中
while
位于行首,直到行首的右大括号


你能给这个再加一些吗

:g/^while/
部分全局搜索以
while
开头的行。下面是一个
ex
命令,该命令对每个匹配行执行。该命令是
,/^}/d
,这意味着从当前行(
)到以右大括号(
/^}//code>)开头的下一行执行删除操作(
d
)。您还可以使用向后搜索或相对运动(
?^{
-3
+10
)等功能

从注释破损的外观很难准确地说出您的想法(不是您的错-注释没有保留有用的格式)

我需要将堆栈溢出替换为
-----------
[…]

这很简单,我看不出
对它有什么影响:

:g/^Stack Over Flow/.,/^-------/d

这与我的原始答案是同构的。

删除块
{…}
比搜索和替换更容易


您可以转到块(在括号内或在打开处)并用
daB将其删除

删除块
{…}
将更容易,而不是搜索和替换


你可以去街区(里面或在带括号的开口处)然后用
daB

删除它。这可能不是你想用正则表达式做的事情。因为你想平衡大括号的数量,否则你只会用你发布的代码吃掉整个文件中最后一个大括号(假设它将在多行上运行)不,你混淆了语法。A,Bd从A行到B行删除(其中A和B可以是行号或正则表达式).A、B、Cd应该是语法错误。/A.*B.*C/将是一个正则表达式,与A、B、C匹配,并在同一行中包含中间的任何内容。这可能不是您希望使用正则表达式所做的事情。因为您希望平衡大括号的数量,否则您将一直吃到e整个文件中的最后一个大括号和您发布的代码(假设它将在多行上运行)。不,您混淆了语法。A、Bd从A行到B行删除(其中A和B可以是行号或正则表达式).A、B、Cd应该是语法错误。/A.*B.*C/将是一个正则表达式,与A、B、C匹配,并在同一行中包含中间的任何内容。我必须对正则表达式执行此操作,因为文件非常大,并且特定的块出现在文件中的多个位置。我不能只查找每一个匹配项。很难找到它使用正则表达式执行此操作,因为代码中可能存在不平衡的括号。因此,在替换后进行严格检查是不可避免的。我必须使用正则表达式执行此操作,因为文件非常大,并且特定的块出现在文件中的多个位置。我不能每次都查看。使用r很难做到这一点正则表达式,因为代码中可能有不平衡的括号。所以替换后的严格检查是不可避免的。你能不能再添加一些。我的情况是这样的。我有一个如下的块:-------堆栈溢出垃圾垃圾垃圾垃圾垃圾酷垃圾垃圾垃圾垃圾垃圾垃圾-------我需要从堆栈溢出到------------我的情况是这样的。我有一个积木如下:-------积木,积木,积木,积木,积木,积木,积木,积木,积木,积木,积木,积木,积木,积木,积木,积木,积木,积木,积木,积木,积木,积木,积木,积木,积木,积木,积木,积木,积木,积木,积木,积木,积木,积木,积木,积木,积木,积木n之间的一些如何像这样:堆栈溢出。*酷*------------