# bedtools closest -a ta -b tb -d | sort -k9,9n | perl -ne 'BEGIN{$limitedDistance=10000; use List::Util qw(min max); my %hash=();} @a=split; $idA=$a[3]; $idB=$a[7]; $dis=$a[8]; if($hash{$idA} and !$hash{$idB}){print "$a[4]\t$a[5]\t$a[6]\t$a[7]\n"; $hash{$idB}=1;} if($hash{$idB} and ! $hash{$idA}){print "$a[0]\t$a[1]\t$a[2]\t$a[3]\n"; $hash{$idA}=1; } if(!$hash{$idA} and ! $hash{$idB}){ if($dis > $limitedDistance){ print "$a[0]\t$a[1]\t$a[2]\t$a[3]\n"; print "$a[4]\t$a[5]\t$a[6]\t$a[7]\n";} else{ $start=min($a[1], $a[5]); $end=max($a[2],$a[6]); print "$a[0]\t$start\t$end\t$a[3],$a[7]\n"; $hash{$idA}=1; $hash{$idB}=1; } } ' | sort -k1,1 -k2,2n