按照滑动窗口合并文件不同区间
各位大神好,我这边有一个文件是:一共4列,如下图index pos1 pos2 id
1 300 301 a1
1 400 401 a2
1 1500 1501 a3
2 100101a4
2 200 201 a5
2 500 501 a6
2 2000 2001 a7
3 100101a8
3 250 251 a9
3 550 551 a9
现在想要在第一列index相同的情况下 按照200的滑动窗口合并,即: 如果下一行的第一列与上一行的第三列间隔在200之内,则将区间合并, 如果200之内不能合并,则看400之内能否合并 如果400也不能合并,则开启新的一行:输出大概如下:
1 300 401 a1,a2 2
1 1500 1501 a31
2 100501a4,a5,a6 3
2 2000 2001 a7 1
3 100551a8,a9,a10 3
请问大家应该怎么实现呢?
回复 1# biobaby
cat 1
index pos1 pos2 id
1 300 301 a1
1 400 401 a2
1 1500 1501 a3
2 100 101 a4
2 200 201 a5
2 500 501 a6
2 2000 2001 a7
3 100 101 a8
3 250 251 a9
3 550 551 a9
awk 'NR>1{if(!a[$1]++){if(b){print b,c,d,e,f};b=$1;c=$2;d=$3;e=$4;f=1;next};if(($2-d)<400){d=$3;e=e","$4;f++}else{print b,c,d,e,f;c=$2;d
=$3;e=$4;f=1}}END{if(b){print b,c,d,e,f}}' 1
1 300 401 a1,a2 2
1 1500 1501 a3 1
2 100 501 a4,a5,a6 3
2 2000 2001 a7 1
3 100 551 a8,a9,a9 3
页:
[1]