假设我有一个大文件,大约 1k 行,我需要删除后面的行某种模式,我们称之为:somePatern
。
状况:
- 无法手动完成(无法搜索 --
/somePattern
和/或手动向下移动一行并删除)。 - 最好是单衬里。
- 包含模式的行之后的行必须消失(没有空行)
- 必须与 UNIX 兼容(我使用 Debian,但需要它用于 UNIX —— 如果两者都能工作那就太好了)
另外,如果有人有一个网站的链接,我可以在其中学习这个和更多正则表达式的东西,那就太棒了! (但不是初学者类型的啧啧声,我已经把它记下来了,感谢vimtutor
和其他人的礼貌。)
答案1
g/somepattern/+d
在下面的示例中,baz 被删除。 (不过我只用 Vim 验证过。)
foo
bar
somepattern
baz
someotherpattern
答案2
看一看这里在第 3.2 节“操作范围、行寻址和标记”中。看来 Vim 命令可以接受前面的行范围。通过指定行范围,您可以将命令执行限制为仅文本的该特定部分。
例如:
/pattern[/]
文本“pattern”匹配的下一行
?pattern[?]
文本“pattern”匹配的上一行