Tengo un par de archivos de texto grandes y en el archivo UNIQS.txt
tengo una lista de cadenas grep
de otro archivo. El código que uso es
grep -f UNIQS.txt EEP_VSL.uniqs.sam > UNIQ_templates.sam
que no hace nada: el archivo generado está vacío. Pero cuando lo hago
grep -F -f UNIQS.txt EEP_VSL.uniqs.sam > UNIQ_templates.sam
Funciona correctamente. Esto me confunde porque no pensé grep
que interpretaría las entradas UNIQS.txt
como patrones regexp sin comillas y barras y así sucesivamente en el archivo (que no hay). ¿Es el caso en general que si obtiene los patrones de un archivo, automáticamente pensará que son patrones regexp?
Editar: en el UNIQS.txt
archivo, hay cadenas separadas por nueva línea del formulario
HWI-ST365:215:D0GH0ACXX:2:1101:10034:186783
(llamados nombres de plantilla) y las EEP_VSL...
columnas separadas por la pestaña del archivo , con aproximadamente 14 columnas y la primera columna es el nombre de la plantilla, así que básicamente quiero extraer la línea correspondiente a cada plantilla en el archivo.
-x
-F
bandera. Mi conjetura es que-
en la línea de muestra anterior hace que esto se lea como una secuencia de caracteres. ¿No requeriría eso también corchetes? He probado con algunos archivos de muestra pero no he llegado a una conclusión.-F
. Haría la diferencia con personajes como\[*^$
.-F
bandera.Tuve el mismo error, no resuelto con la buena respuesta de @gilles. Mirando más de cerca en el archivo de entrada, encontré 2 líneas nuevas al final. Sin estos, el éxito solo era necesario: grep -i file_pattern_input file
(GNU grep 3.1, archivo de entrada de más de 5000 registros, archivo de coincidencia / patrón 2536, sabía que todo el 2536 tenía que estar en el archivo. Con las nuevas líneas obtuve todas las líneas del archivo y sin solo las 2536 líneas coincidentes)
fuente