我有一个包含以下数据的文件。
>Cluster 1
0 1a, >bcd
>Cluster 2
0 1a, >cfg
>Cluster 3
0 5a, >jkl
1 8a, >lmk
2 3a, >qwe
3 9a, >oiu
我需要一个包含多个“>”的所有集群的列表。
我使用了grep '>' 'filename'|grep '>'|grep '>'
但是这再次给出了相同的确切列表:
>Cluster 1
0 1a, >bcd
>Cluster 2
0 1a, >cfg
>Cluster 3
0 5a, >jkl
1 8a, >lmk
2 3a, >qwe
3 9a, >oiu
但输出应该只是集群 3:
>Cluster 3
0 5a, >jkl
1 8a, >lmk
2 3a, >qwe
3 9a, >oiu
如何使用 grep 和/或其他 vim 命令解决这个问题?
您可以使用以下条件创建正则表达式以匹配不需要的行:
>
第一个字符的一行开始,并匹配整行>
。这将匹配您不需要的组,最后一项是键:它匹配下一组的开头,保证当前组只有一个子行。
然后你可以什么都不替换这个匹配,有效地删除组 < 2。在 Vim 中:
:%s/^>.*\n0.*\n\ze>//
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句