寻找一些搜索文件的vim帮助
我想帮助在一个文件中查找一些数据,例如160万条记录/行。
记录遵循与下面的内容非常相似的模式,我想在第二列数字中找到所有没有16位数的记录,然后将所有这些记录/行放到顶部或者放到底部。
对于这个例子,我做了一些没有16位数的记录。只有三个记录有16位数字,它们应该被带到底部,五个没有16位数字应该被带到顶部。 [更新了数据示例,但此处未正确对齐...请参阅:http://pastiebin.com/53059f6a0a218
A1553419V 4111111851111111 111811_2519104
U1753419V 411001111111111 111811_2519104
I1053419V 41111111881111 111811_2519104
J1253419V 3566002020360505 111811_2519104
P1153419V 378282246310005 111811_2519104
C1953419V 12345678900000 111811_2519104
T1953419V 852741369123 111811_2519104
W1353419V 5610591081018250 111812_2519104
顺便说一句,这些行在第80列结束。
所以在这个例子中,我想知道线条:2,3,5,6,7。 第1,5,8行在中间列中都有16位数字。
这个真正基本的语法只会突出显示所有16位数字,但是通过一百万个以上的记录是愚蠢的:/\d\d\d\d\d\d\d\d\d\d\d\d\d\d\d\d
感谢您提供解决方案的任何帮助。
是的,任何脚本语言都可能(可能)更合适,如果你愿意写一些简单的东西来帮助世界,那就做我的客人吧。
答案 0 :(得分:4)
试试这个:
:v/ [0-9]\{16} /m 0
:v
- 对于不匹配的行/ [0-9]\{16} /
- 空格,16位数,空格m 0
- 将它们移至顶部(使用$
代替0
移至最底层)编辑:正如Ingo评论的那样,{
需要转义才能实现。