Quiero encontrar patrones que se enumeran en un archivo y encontrarlos en otro archivo. El segundo archivo tiene esos patrones separados por comas.
por ejemplo, el primer archivo F1 tiene genes
ENSG00000187546
ENSG00000113492
ENSG00000166971
y el segundo archivo F2 tiene esos genes junto con algunas columnas más (cinco columnas) que necesito
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
Entonces, el gen ENSG00000166971 que está presente en el segundo archivo no aparece en grep porque tiene otro gen, separado por comas.
Mi código es:
grep -f "F1.txt" "F2.txt" >output.txt
Quiero esos valores incluso si uno de ellos está presente, y los datos asociados con él. ¿Hay alguna forma de hacerlo?
grep
anclaje sus patrones por defecto? ¿grep -f <(echo a) <(echo 'a,b')
Produce alguna salida?Respuestas:
¿Qué versión de
grep
estás usando? Probé su código y obtuve los siguientes resultados:Si solo desea que los resultados coincidan, puede usar
grep
el-o
interruptor para informar solo las cosas que coinciden:versión grep
Personajes extraviados en F1.txt?
Mientras lo depuraba más, noté varios espacios perdidos al final de la segunda línea del archivo
F1.txt
. Puedes verlos usandohexdump
.Se presentan con los códigos ASCII 20. Se los puede ver en ellos aquí:
32 20 20 0a
.fuente