linux shell 中实现删除文本的奇数行或者偶数行

 

 001、删除奇数行

a、sed实现

[root@PC1 test01]# ls
a.txt
[root@PC1 test01]# cat a.txt              ## 测试数据
1       01      02
2       03      04
3       05      06
4       07      08
5       09      10
6       11      12
7       13      14
8       15      16
9       17      18
10      19      20
[root@PC1 test01]# sed '1~2d' a.txt       ## sed实现
2       03      04
4       07      08
6       11      12
8       15      16
10      19      20

 

b、awk实现

[root@PC1 test01]# ls
a.txt
[root@PC1 test01]# cat a.txt                   ## 测试数据
1       01      02
2       03      04
3       05      06
4       07      08
5       09      10
6       11      12
7       13      14
8       15      16
9       17      18
10      19      20
[root@PC1 test01]# awk 'NR % 2 == 0' a.txt     ## awk实现
2       03      04
4       07      08
6       11      12
8       15      16
10      19      20

 

c、vim实现

1       01      02
2       03      04
3       05      06
4       07      08
5       09      10
6       11      12
7       13      14
8       15      16
9       17      18
10      19      20
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
:%normal jkdd         ## 命令模式下执行该语句,删除奇数行

 

d、sed实现

[root@PC1 test01]# ls
a.txt
[root@PC1 test01]# cat a.txt                       ## 测试数据
1       01      02
2       03      04
3       05      06
4       07      08
5       09      10
6       11      12
7       13      14
8       15      16
9       17      18
10      19      20
[root@PC1 test01]# sed '1d; n; d' a.txt          ## sed中删除奇数行
2       03      04
4       07      08
6       11      12
8       15      16
10      19      20

 

002、删除偶数行

a、sed实现

[root@PC1 test01]# ls
a.txt
[root@PC1 test01]# cat a.txt                  ## 测试数据
1       01      02
2       03      04
3       05      06
4       07      08
5       09      10
6       11      12
7       13      14
8       15      16
9       17      18
10      19      20
[root@PC1 test01]# sed '2~2d' a.txt          ## 删除偶数行
1       01      02
3       05      06
5       09      10
7       13      14
9       17      18

 

b、awk实现

[root@PC1 test01]# ls
a.txt
[root@PC1 test01]# cat a.txt                     ## 测试数据
1       01      02
2       03      04
3       05      06
4       07      08
5       09      10
6       11      12
7       13      14
8       15      16
9       17      18
10      19      20
[root@PC1 test01]# awk 'NR % 2 != 0' a.txt      ## 删除偶数行
1       01      02
3       05      06
5       09      10
7       13      14
9       17      18

 

c、vim实现

1       01      02
2       03      04
3       05      06
4       07      08
5       09      10
6       11      12
7       13      14
8       15      16
9       17      18
10      19      20
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
:%normal jdd        ## 命令模式下,输入一下内容并执行

 

d、sed实现

[root@PC1 test01]# ls
a.txt
[root@PC1 test01]# cat a.txt                 ## 测试数据
1       01      02
2       03      04
3       05      06
4       07      08
5       09      10
6       11      12
7       13      14
8       15      16
9       17      18
10      19      20
[root@PC1 test01]# sed 'n; d' a.txt        ## 删除偶数行
1       01      02
3       05      06
5       09      10
7       13      14
9       17      18

 。

 

posted @ 2024-02-04 20:48  小鲨鱼2018  阅读(127)  评论(0编辑  收藏  举报