Trouver un model à partir d'un file répertorié dans un autre

Je veux find des templates qui sont répertoriés dans un file et les find dans un autre file. Le deuxième file a ces templates séparés par des virgules.

par exemple, le premier file F1 a des gènes

ENSG00000187546 ENSG00000113492 ENSG00000166971 

et le deuxième file F2 a ces gènes avec quelques autres colonnes (cinq colonnes) dont j'ai besoin

  region gene chromosome start end intronic ENSG00000135870 1 173921301 173921301 intergenic ENSG00000166971(dist=56181),ENSG00000103494(dist=37091) 16 53594504 53594504 ncRNA_intronic ENSG00000215231 5 5039185 5039185 intronic ENSG00000157890 15 66353740 66353740 

Donc le gène ENSG00000166971 qui est présent dans le second file ne s'affiche pas dans grep car il a un autre gène avec lui, séparé par une virgule.

Mon code est:

 grep -f "F1.txt" "F2.txt" >output.txt 

Je veux ces valeurs même si l'un d'entre eux est présent, et datatables associées avec elle.Est-il un moyen de le faire?

Quelle version de grep utilisez-vous? J'ai essayé votre code et j'ai obtenu les résultats suivants:

 $ grep -f file1 file2 ENSG00000187546 ENSG00000113492 ENSG00000166971,ENSG00000186106 

Si vous voulez juste que les résultats correspondent, vous pouvez utiliser le commutateur -o grep pour ne signaler que les éléments qui correspondent:

 $ grep -o -f file1 file2 ENSG00000187546 ENSG00000113492 ENSG00000166971 

Version grep

 $ grep --version grep (GNU grep) 2.14 Copyright (C) 2012 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>. This is free software: you are free to change and redissortingbute it. There is NO WARRANTY, to the extent permitted by law. Written by Mike Haertel and others, see <http://git.sv.gnu.org/cgit/grep.git/tree/AUTHORS>. 

Caractères errants dans F1.txt?

En déboguant cela plus loin, j'ai remarqué plusieurs espaces F1.txt à la fin de la 2ème ligne dans le file F1.txt . Vous pouvez les voir en utilisant hexdump .

 $ hexdump -C ff1 00000000 45 4e 53 47 30 30 30 30 30 31 38 37 35 34 36 0a |ENSG00000187546.| 00000010 45 4e 53 47 30 30 30 30 30 31 31 33 34 39 32 20 |ENSG00000113492 | 00000020 20 0a 45 4e 53 47 30 30 30 30 30 31 36 36 39 37 | .ENSG0000016697| 00000030 31 0a |1.| 00000032 

Ils apparaissent avec les codes ASCII 20. Vous pouvez les voir ici: 32 20 20 0a .