Vérifier le numéro contre toutes les plages dans le script shell

Je dois vérifier des nombres spécifiques à partir de fichier1 contre toutes les plages de fichier2.

fichier de chat1

20 00000000000328051779 00000000000000000000922820669 xx 20 00000000000228051777 00000000000000000000922820669 xx 20 00000000000228051813 00000000000000000000922820669 xx

fichier de chat2

228051777, 228051779 228051811, 228051814 228051817, 228051817 

sortie

20 00000000000228051777 00000000000000000000922820669 xx 20 00000000000228051813 00000000000000000000922820669 xx

C’est mon code jusqu’ici. Vous avez le bon résultat mais il est trop lent à lire des milliers d’enregistrements.

  #segregate records awk -F', +' ' # 1st pass (fileB): read the lower and upper range bounds FNR==NR { lbs[++count] = $1+0; ubs[count] = $2+0; next } # 2nd pass (FILES): check each line against all ranges. { for(i=1;i= lbs[i] && anum+0 <= ubs[i]) { print; next } } } ' file2 file1 

Vous pouvez utiliser cet awk :

 awk -F', *' 'NR == FNR { lb[++i] = $1; ub[i] = $2; next } { anum = substr($1,3,20)+0; for(k=1; k<=i; k++) if (anum >= lb[k] && anum <= ub[k]) print }' file2 file1 200000000000022805177700000000000000000000922820669 xx 200000000000022805181300000000000000000000922820669 xx