GNU/Linux >> Tutoriales Linux >  >> Linux

¿Leyendo patrones Grep de un archivo?

Tengo un par de archivos de texto grandes y en el archivo UNIQS.txt Tengo una lista de cadenas para 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é que grep interpretaría las entradas en UNIQS.txt como patrones de expresiones regulares sin comillas ni barras y así sucesivamente en el archivo (que no hay). ¿Es el caso en general que si está obteniendo los patrones de un archivo, automáticamente pensará que son patrones de expresión regular?

Editar: En el UNIQS.txt archivo, hay cadenas separadas por saltos de línea de la forma

HWI-ST365:215:D0GH0ACXX:2:1101:10034:186783

(llamados nombres de plantillas) y el archivo EEP_VSL... columnas separadas por tabulaciones, con alrededor de 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.

Respuesta aceptada:

El -f La opción especifica un archivo donde grep lee patrones. Eso es como pasar patrones en la línea de comando (con -e opción si hay más de una), excepto que cuando llama desde un shell, es posible que deba citar el patrón para evitar que el shell expanda los caracteres especiales.

El argumento -E o -F o -P , si lo hay, le dice a grep en qué sintaxis están escritos los patrones. Sin argumentos, grep espera expresiones regulares básicas; con -E , grep espera expresiones regulares extendidas; con -P (si se admite), grep espera expresiones regulares de Perl; y con -F , grep espera cadenas literales. No importa si los patrones provienen de la línea de comando o de un archivo.

Tenga en cuenta que las cadenas son subcadenas:si pasa a+b como patrón, luego una línea que contiene a+b+c está emparejado. Si desea buscar líneas que contengan exactamente una de las cadenas proporcionadas y no más, pase -x opción.


Linux
  1. ¿Imprimir líneas entre (e incluyendo) dos patrones?

  2. Lectura de líneas de un archivo con Bash:para vs. ¿Mientras?

  3. Lectura de un archivo en ensamblaje

  4. ¿Cómo crear un archivo en Linux desde la ventana de terminal?

  5. grep una lista grande contra un archivo grande

Cómo encontrar una cadena en un archivo en Linux

Cómo extraer direcciones de correo electrónico de un archivo de texto en Linux

Comando grep de Linux

¿Cómo 'grep' una secuencia continua?

Crear un PEM a partir de un archivo PPK

Redirigir strace al archivo