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
。