awk处理案例九--输出取余某特定几行

【场景】

   在一个大文件中(上千行数据);取NR%126的值为1-8,76的行。看有没有很好的写法

 【实现】

[li0924@localhost lottu]$ seq 300|awk '{A=NR%126;if(A>=1&&A<=8||A==76)print}'
1
2
3
4
5
6
7
8
76
127
128
129
130
131
132
133
134
202
253
254
255
256
257
258
259
260

还有seesea兄的巧妙的思路,利用数组的值;代码如下:

awk 'BEGIN{for(i=1;i<=8;++i) ar[i]=1; ar[76] = 1;} (NR%126 in ar)'

awk 'BEGIN{for(i=1;i<=8;++i) ar[i]=1; ar[76] = 1;} ar[NR%126]'  

 

posted @ 2013-09-23 23:06  lottu  阅读(4795)  评论(0)    收藏  举报