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 -R
opçã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 --include
opçã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>