Comando grep para um arquivo de texto em vários diretórios

Comando grep para um arquivo de texto em vários diretórios

Tenho 24 diretórios em um diretório específico (main_directory). Cada diretório 24 possui um arquivo de texto cujo nome é DATA.txt.

Preciso usar o comando grep para extrair o padrão específico abaixo para cada arquivo de texto;

2* x  = 3800689.6402     y  = 882077.3636     z  = 5028791.2953

2* x =parte é constante para todos os DATA.txt. Os outros números numéricos são variáveis. Preciso extrair a linha acima para cada DATA.txt e salvá-los em outro arquivo de texto. Qual script posso usar para este processo?

Responder1

Para pesquisar recursivamente usando grep, use a -Ropção.

Para procurar uma string exata, use -F, para que 2*não seja tratada como uma expressão regular.

Para pesquisar apenas nomes de arquivos específicos, use a --includeopção. Combinado:

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

Responder2

Como você sabe o nome dos arquivos de destino, também pode fazer

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

Ou com awk:

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

E Perl:

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

Responder3

Abordagem geral:

grep -r <pattern>

ou

abordagem específica:

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

informação relacionada