首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >每4行中只保留第一行,其余行删除

问每4行中只保留第一行,其余行删除
EN

Stack Overflow用户
提问于 2013-06-23 15:20:13
回答 2查看 1.6K关注 0票数 5

我有一个如下所示的文件

代码语言:javascript
复制
a
b
c
d
e
f
g
h
i
j
k

我希望它是:

代码语言:javascript
复制
a
e
i

如何在vim中实现?

EN

回答 2

Stack Overflow用户

发布于 2013-06-23 15:28:07

您可以使用以下按键序列来执行此操作:

代码语言:javascript
复制
gg
qa
j
3dd
q
999@a

以下是这些命令的含义:

代码语言:javascript
复制
gg      # jump to the beginning of the file
qa      # start recording a macro in register "a"
j       # move down 1 line
3dd     # delete 3 lines (including the current one)
q       # stop recording the macro
999@a   # replay the macro from register "a"

如果您的系统中有sed (您使用的是Linux、Mac或windows中的Git Bash ),那么这样做会更干净:

代码语言:javascript
复制
:%!sed -ne 1~4p

这会过滤整个缓冲区的内容,通过管道将其发送到sed,然后sed命令从第1行开始每隔4行打印一次输入。

票数 8
EN

Stack Overflow用户

发布于 2013-06-23 16:12:24

从一个answer改编到另一个similar question。

代码语言:javascript
复制
:g/^/+1 d3

(您不需要空格,我只是为了清楚起见添加了空格)

  • /^/匹配任何line.
  • :d都可以接受一个数值参数,该参数指定要删除的行数。

因此,该命令转换为:对于另一行之后的每一行,删除包括当前行在内的3行。

另一种解释是:对于每一行,删除接下来的3行。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17258544

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档