【场景】
在一个大文件中(上千行数据);取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]'