想象一下有一个文本文件。您想知道此文件中是否有相同的模式(例如<br>
)连续出现 N 行,您需要删除前 3 行和后 3 行。我想我可以弄清楚如何执行此删除部分,但我不知道如何实现此模式魔法。
非常适合可视化:
Foo <br>
Bar <br>
Baz <br>
<br>
是文件中基本一致的模式。但有时,出现一些内容必须删除,以便之后可以很好地处理文件:
1 Not good Foo <br>
2 <br>
3 <br>
4 <br>
5 Dirt <br>
6 <br>
我添加了行号。
它与非肿瘤模式的不同之处仅在于有几个连续的断裂。因此,如果我们在第 3 行中意识到这是一个肿瘤片段,那么我们要删除第 1 行到第 6 行。
所以,结论是:每当我看到<br>
连续 2 行时,删除前 2 行、当前行和后 3 行。
答案1
如果我正确地阅读了您的要求,您应该通过在 Vim 中打开文件然后输入以下内容来获得您想要的结果:
:g/^<br>\n<br>$/-1,+4d
然后按“Enter”。
ex
如果必须编写脚本,您也可以这样做。
例子:
前:
Some line
Not good Foo <br>
<br>
<br>
<br>
Dirt <br>
<br>
Some additional line
后:
Some line
Some additional line