Comando grep para un archivo de texto en varios directorios

Comando grep para un archivo de texto en varios directorios

Tengo 24 directorios en un directorio específico (directorio_principal). Cada 24 directorios tiene un archivo de texto cuyo nombre es DATA.txt.

Necesito usar el comando grep para extraer el siguiente patrón específico para cada archivo de texto;

2* x  = 3800689.6402     y  = 882077.3636     z  = 5028791.2953

2* x =parte es constante para todos los DATA.txt. Los demás números numéricos son variables. Necesito extraer la línea anterior para cada DATA.txt y guardarlos en otro archivo de texto. ¿Qué script puedo utilizar para este proceso?

Respuesta1

Para buscar recursivamente usando grep, use la -Ropción.

Para buscar una cadena exacta, utilice -F, para que 2*no se trate como una expresión regular.

Para buscar solo en nombres de archivos específicos, use la --includeopción. Conjunto:

grep -FR --include=DATA.txt '2* x' main_directory > another_text_file

Respuesta2

Como conoce el nombre de los archivos de destino, también puede hacerlo

grep '^2\* x' */DATA.txt > newfile

O con awk:

awk '^/2\* x/' */DATA.txt > newfile

Y Perl:

perl -ne 'print if /2\* x/' */DATA.txt > newfile

Respuesta3

Enfoque general:

grep -r <pattern>

o

enfoque específico:

find -name <file patterns which you want to find> | xargs grep <pattern you looking for>

información relacionada