如何在vi中删除与正则表达式匹配的行?

时间:2011-07-19 17:54:10

标签: regex vi

我有一个大文本文件,其中包含以下标题,我正在尝试删除。例如:

1 Nephi 2:13
 13 Neither did they believe that Jerusalem, that great city,
could be destroyed according to the words of the prophets. And
they were like unto the Jews who were at Jerusalem, who sought to
take away the life of my father.
1 Nephi 2:14
 14 And it came to pass that my father did speak unto them in the
valley of Lemuel, with power, being filled with the Spirit, until
their frames did shake before him. And he did confound them,
that they durst not utter against him; wherefore, they did as he
commanded them.
1 Nephi 2:15
 15 And my father dwelt in a tent.
1 Nephi 2:16

我正在尝试删除包含“1 Nephi 2:16”的整行,所以我在vi中寻找一个与包含书和诗歌参考的整行匹配的正则表达式。

以下是需要匹配的示例书籍和诗歌组合的列表

1 Nephi 2:16
Mormon 3:7
Alma 32:27
Words of Mormon 1:3

2 个答案:

答案 0 :(得分:4)

对混乱的回答嗤之以鼻:如果你可以确定以冒号分隔的两个数字结尾的行的任何一个都是标题:

:g/.* [0-9]\+:[0-9]\+$/d

答案 1 :(得分:2)

:g/1 Nephi 2:16/d
:g/Mormon 3:7/d
:g/Alma 32:27/d
:g/Words of Mormon 1:3/d

这些命令意味着“全局( g )匹配此正则表达式( /.../ )并删除( d )每行它发生了“。