如何使用 vi 全局删除搜索模式后的行?

如何使用 vi 全局删除搜索模式后的行?

假设我有一个大文件,大约 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”匹配的上一行

相关内容