vi 删除第二次出现模式的行

vi delete line with second occurence of pattern

我有一个大文件,很多行都是重复的。我试图删除每第二次出现模式的行。是否尝试在 SO 上搜索类似的问题,但没有成功。

我可以删除所有与“:g/pattern/d”模式匹配的行,但不想丢失数据。

要删除的样本模式"John-------Doe"

Sample data:  
Time--------FName---------LName

11:05-------John------------Doe   
11:05-------John------------Doe  
11:06-------Michael---------Lawrence  
11:06-------Michale---------Lawrence

Expected result:  
11:05-------John------------Doe   
11:06-------Michael---------Lawrence  

%!uniq 如果文件只包含排序后的数据
%!sort -u 如果文件只包含数据,但未排序
S,E!uniq 其中 S 是数据的起始行号,E 是数据的结束行号,假设数据已排序
S,E!sort -u 其中S是数据的起始行号,E是数据的结束行号,对于未排序的数据