vim的匹配删除

1.一个文本类似:
12.123 32.321 21.123 15.789 1.000 nan nan
xxxxxx xxxxxx xxxxxx xxxxxx xxxxx xxx xxx
如此规则的文本。我想每行保留前三种数据即12.123 32.321 21.123,后面的数据就全删除掉。

2.最近学习vim的匹配,想通过vim的匹配技巧去处理。
%s/^s{3}.*//g(从行首匹配到第三个空白符后再匹配任意数量的任意字符然后用空白替换掉)。显然达不到我想要的结果
所以想问一下这里正确的匹配该怎么写
在此感谢

阅读 2.5k
2 个回答

用正则分组

:%s/\(^\S\+\(\s\S\+\)\{2}\).*/\1/g

这样的任务(结构化文本,特定分隔符)最好的工具是awk,你不觉得在vim里要写太多的令你眼花的转义符吗。

匹配倒还没想到。但是可以通过 “宏” 来操作。。

光标定在第一行第一个字符:
qq
WWWlDj0q
@q (有100行就 100@q)

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题