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

4

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

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

2* x  = 3800689.6402     y  = 882077.3636     z  = 5028791.2953

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

    
por deepblue_86 01.04.2016 / 08:44

3 respostas

8

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

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

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

grep -FR --include=DATA.txt '2* x' main_directory > another_text_file
    
por muru 01.04.2016 / 09:14
5

Como você sabe o nome dos arquivos de destino, você 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
    
por terdon 01.04.2016 / 10:21
1

Abordagem geral:

grep -r <pattern>

ou

abordagem específica:

find -name <file patterns which you want to find> | xargs grep <pattern you looking for>
    
por 404pio 01.04.2016 / 10:44