我想使用 Vi 编辑器删除文件中的多行。请给我想法或建议。
我的目标是这样的:
前:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
.
.
29
30
.
.
后;
1
10
20
30
40
.
.
答案1
如果您想保留每 10 行并删除其余行:
%norm 9ddj
解释:
%
整个文件
norm
在“正常模式”下执行以下命令
9dd
删除9行
j
向下移动一行(即保留)
笔记:这将删除第一行。
改编自http://www.rayninfo.co.uk/vimtips.html
或者使用全局命令:
- 复制第一行ggYP
:g/^/+ d9
改编自https://stackoverflow.com/questions/1946738/vim-how-to-delete-every-second-row
或者你可以使用awk
:
%!awk 'NR \% 10 == 0 || NR == 1'
答案2
:2,$v/0$/d
0
删除从第二行开始不结束的行。