微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用vim从文本中提取特定段落?

我试图从包含这种格式的文本的大文件提取多次测试

CL blahblahblah  
SP blahblahblah blahblahblah blahblahblah  
DE blahblahblahblahblahblah blahblahblah blahblahblah   
   blahblahblah blahblahblah blahblahblah blahblahblah  
AB blahblahblah blahblahblah blahblahblah 
   blahblahblahblahblahblah blahblahblah blahblahblah
   blahblahblah blahblahblah blahblahblah blahblahblah blahblahblah blahblahblah    
   blahblahblah blahblahblah blahblahblah   
C1 blahblahblah blahblahblah blahblahblah blahblahblah blahblahblah blahblahblah 
   blahblahblah blahblahblah blahblahblah blahblahblah blahblahblah blahblahblah   
   blahblahblah blahblahblah blahblahblah blahblahblah blahblahblah blahblahblah 
   lahblahblah blahblahblah blahblahblah blahblahblah blahblahblah blahblahblah 
RP blahblahblah blahblahblah blahblahblah blahblahblah blahblahblah blahblahblah
   blahblahblah blahblahblah  
EM blahblahblah blahblahblah blahblahblah blahblahblah  
NR blahblahblah blahblahblah blahblahblah blahblahblah  
TC blahblahblah blahblahblah blahblahblah blahblahblah 
   blahblahblah blahblahblah blahblahblah blahblahblah  
Z9 blahblahblah blahblahblah blahblahblah blahblahblah  
PU blahblahblah blahblahblah blahblahblah blahblahblah  
PI blahblahblah blahblahblah blahblahblah blahblahblah blahblahblah blahblahblah blahblahblah blahblahblah

我只对以C1,AB,TI开头的条目感兴趣,但有时这些条目跨越多行,并且跟随它们的XX标记行并不总是相同.有没有一种简单的方法只保留这些条目?
所以我剩下的文字应该是这样的:

TI blahblahblah  
AB blahblahblah b lah blahblah blah blahblahblah blahblahblah blahblahblah blahblahblah blahblahblah blahblahblah blahblahblah blahblahblah blahblahblah blahblahblah     
C1 blahblahblah blahblahblah blahblahblah blahblahblah  
   blahblahblah blahblahblah blahblahblah blahblahblah  
   blahblahblah blahblahblah blahblahblah blahblahblah 
TI blah blah blah blah blah blah  
AB blahblahblah blahblahblah blahblahblah blahblahblahblahblahblah blahblahblah blahblahblah blahblahblah blahblahblahblah blahblahblah blahblahblah blahblahblah   
   blahblahblah blahblahblah blahblahblah blahblahblah  blahblahblah blahblahblah blahblahblah blahblahblah 
   blahblahblah blahblahblah blahblahblah blahblahblah 
C1 blahblahblah blahblahblah blahblahblah blahblahblahblahblahblah blahblahblah blahblahblah blahblahblah blahblahblah blahblahblah blahblahblah blahblahblah

等等..

非常感谢!

解决方法

我会做:

:$put='X' | 1,$-1g/^\(\s\|C1\|AB\|TI\)\@!/,/^\S/-d
:$d

这将执行以下操作:

>在末尾插入一行包含“X”的行
>对于除最后一行(1,$ – 1)之外的每一行,如果它以非空格开始并且不以C1,AB或TI(g / pattern /)开头,则删除(d)直到下一行不以空格开头,/ pattern / not included( – 这是-1的缩写)
>最后删除“X”行

为了尝试使用Gvim:

>将此代码复制到剪贴板
>在Gvim中运行:@(从链接到剪贴板的寄存器中播放Ex命令).

我得到了什么:

AB blahblahblah blahblahblah blahblahblah 
   blahblahblahblahblahblah blahblahblah blahblahblah
   blahblahblah blahblahblah blahblahblah blahblahblah blahblahblah blahblahblah    
   blahblahblah blahblahblah blahblahblah   
C1 blahblahblah blahblahblah blahblahblah blahblahblah blahblahblah blahblahblah 
   blahblahblah blahblahblah blahblahblah blahblahblah blahblahblah blahblahblah   
   blahblahblah blahblahblah blahblahblah blahblahblah blahblahblah blahblahblah 
   lahblahblah blahblahblah blahblahblah blahblahblah blahblahblah blahblahblah

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐