varios varias texto regulares patrones para palabras expresiones contar comprimidos comando buscar archivos string shell grep string-matching

string - varias - Extrae cadenas en un archivo de texto usando grep



ls grep (2)

for line in `cat text.txt`; do grep $line input.txt >> output.txt; done

Contenido de text.txt :

ABCB8 ABCC12 ABCC3 ABCC4 AHR ALDH4A1 ALDH5A1

Editar :

Una solución más segura con while reading:

cat text.txt | while read line; do grep "$line" input.txt >> output.txt; done

Editar 2 :

Muestra text.txt :

ABCB8 ABCB8XY ABCC12

Muestra input.txt :

You were hired to do a job; we expect you to do it. You were hired because ABCB8 you kick ass; we expect you to kick ass. ABCB8XY You were hired because you can commit to a rational deadline and meet it; ABCC12 we''ll expect you to do that too. You''re not someone who needs a middle manager tracking your mouse clicks

Si no le importa el orden de las líneas, la solución rápida sería canalizar la solución a través de un sort | uniq sort | uniq :

cat text.txt | while read line; do grep "$line" input.txt >> output.txt; done; cat output.txt | sort | uniq > output2.txt

El resultado está en output.txt .

Editar 3 :

cat text.txt | while read line; do grep "/<${line}/>" input.txt >> output.txt; done

¿Eso está bien?

Tengo file.txt con nombres uno por línea como se muestra a continuación:

ABCB8 ABCC12 ABCC3 ABCC4 AHR ALDH4A1 ALDH5A1 ....

Quiero grep cada uno de estos desde un archivo input.txt.

Manualmente hago esto uno a la vez como

grep "ABCB8" input.txt > output.txt

Podría alguien ayudar a grep automáticamente todas las cadenas en file.txt desde input.txt y escribirlo en output.txt.


Puede utilizar el -f como se describe en Bash, Linux. Necesitará eliminar líneas de un archivo basándose en el contenido coincidente de otro archivo

grep -o -f file.txt input.txt > output.txt

Bandera

  • -f FILE , --file=FILE :

Obtenga patrones de FILE, uno por línea. El archivo vacío contiene cero patrones, y por lo tanto no coincide con nada. (-f es especificado por POSIX)

  • -o , --only-matching :

Imprima solo las partes coincidentes (no vacías) de una línea coincidente, con cada una de esas partes en una línea de salida separada.