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 -R
opció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 --include
opció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>