[toc]
shell获取奇数行和偶数行
方法一 awk
文件内容
$ cat test.txt
1
2
3
4
5
6
获取奇数行
方法一 NR为行,每一行与2取模,奇数与2取模结果为1,1为真,所以输出奇数行
$ awk 'NR%2' test.txt
1
3
5
方法二 ++i表示i先自加1,因此i的值为1
$ awk '++i%2' test.txt
1
3
5
方法三 行数与2取模,等于1的就是奇数行
$ awk '{if(NR%2==1)print $0}' test.txt
1
3
5
获取偶数行
方法一 NR为行,每一行与2取模,奇数与2取模结果为1,1为真,所以输出奇数行,取反则输出偶数行
$ awk '!(NR%2)' test.txt
2
4
6
方法二 i++表示先赋值再自加,因此i的值为0
$ awk 'i++%2' test.txt
2
4
6
方法三 行数 与2取模,等于0的就是偶数行
$ awk '{if(NR%2==0)print $0}' test.txt
2
4
6
方法二 sed
获取奇数行
n表示换行,此命令为先打印P,然后再换行,会把下一行覆盖,因此为先打印1行,然后换行,覆盖第二行,再打印第3行,覆盖第四行。。。
$ sed -n '1,$p;n' test.txt
1
3
5
获取偶数行
与奇数行相反,先换行,覆盖第一行,再打印,打印第二行,然后再换行,覆盖第三行,然后再打印,打印第四行。。。
$ sed -n '1,$n;p' test.txt
2
4
6