awk :
awk -F'[[:space:]][[:space:]]+' 'NR==FNR{ a[$1]=$0; next }
{ for(i in a) {
if (int(i) >= $2 && int(i) <= $3) {
print a[i],$0; delete a[i]; break
}
}
}' File1 OFS='\t' File2
A saída:
8750 11.29592283 DNA methylase CDS 7655 8755 TK0008
8800 7.500359335 hypothetical protein CDS 8760 10093 TK0009
-
-F'[[:space:]][[:space:]]+'
- separador de campo de definição de padrões -
a[$1]=$0
- capturando valores cruciais deFile1
-
if (int(i) >= $2 && int(i) <= $3)
- verifique se o valor de primeiro campo deFile1
está no intervalo (entre os valores do segundo e terceiro níveis deFile2
) -
delete a[i]
- elimina o valor correspondente -
break
- quebrando o loop para evitar iterações redundantes