Grep mais loop

1. Grep mais loop

Leandro Moraes de Oliveira
lmoraes

(usa Slackware)

Enviado em 03/12/2008 - 11:45h

Olá
Bom dia,

Sou iniciante em shell script e gostaria de saber como faço para rodar um grep, onde a string procurada estará em um arquivo externo fora do shell script e está string será uma lista, seguindo linha a linha. Os resultados serão direcionados para um só lugar para isso irei usar o ">>".

Por exemplo tenho um arquivo chamado "nomes" que contém:

Juliana
Matheus
Pedro
Mauricio

Preciso rodar um grep procurando por todos estes nomes num outro arquivo, e que seja gerado um arquivo com os resultados.

Espero ter conseguido passar o que preciso
Obrigado!


  


2. Re: Grep mais loop

nelio
neliobjr

(usa Red Hat)

Enviado em 03/12/2008 - 13:00h

"Espero ter conseguido passar o que preciso
Obrigado!"

É cara, não conseguiu não, rsrsrs..

O que eu não estou entendo é este loop que vc se refere, veja o que eu acho que vc tem em mente.:

vc tem um arquivo nomes, por exemplos, com os seguintes nomes:

Juliana
Matheus
Pedro
Mauricio

certo, o que vc pensou é o seguinte, fazer um loop, para jogar o nome juliana no comando grep, e procurar no arquivo, se tiver joga para a sua saida, um novo arquivo com o >>
ai vai para o segundo nome, Matheus, atraves do loop, e procura, se tiver joga para novo arquivo, e assim sucessivamente.

então,,, vc não precisa fazer este loop, vc consegue passar no proprio grep, os nomes todos que vc quer procurar com uma condição "ou", ex., se Juliana ou Pedro ou Dino_da_silva_sauro estiverem no arquivo nomes, joga para novo arquivo, como Dino_da_silva_sauro, não esta jogara somente os Juliana e Pedro. para isso faça assim:

grep -i "juliana\|ana\|marcos" nomes >> novo_arquivo

o -i faz com que procure tanto em maiuscula quanto minuscula.

é isso, qualquer coisa se eu entendi errado posta ai...

ABS


3. Re: Grep mais loop

Leandro Moraes de Oliveira
lmoraes

(usa Slackware)

Enviado em 03/12/2008 - 13:23h

É isto mesmo cara porém preciso de um loop por que o meu arquivo não vai ser sempre o mesmo e ele tem mais de 1000 nomes diferentes, então a solução deveria ser através de um loop.

Vlw
Obrigado!



4. Re: Grep mais loop

nelio
neliobjr

(usa Red Hat)

Enviado em 03/12/2008 - 14:06h

Entendi, segue o loop, porem poderiamos ter feito sem o loop tb.

#!/bin/sh

rm -rf /caminho/arq_final
cat /caminho/arq_origem_nomes | while read linha; do
grep /caminho/arq_consulta >> /caminho/arq_final

done


5. Ve se fuciona

Lucas Ramos
sequisso

(usa Slackware)

Enviado em 03/12/2008 - 14:12h

Kra, com o grep você pode passar uma expressão regular com o parâmetro -e, mas para isso eu utilizaria sed, iria ficar +- assim;

sed -n -e '/Juliana/p;/Matheus/p;/Pedro/p' nome_do_arquivo de busca >> nome_do_arquivo_destino, este comando irá buscar Juliana, Matheus, Pedro dentro do arquivo passado, retornando o nome caso encontre!


6. Re: Grep mais loop

Felippe de Abreu
fdeabreu

(usa Debian)

Enviado em 22/10/2012 - 18:05h

Dando continuidade ao topico, falando sobre Grep,

estou tentando fazer um if usando grep!

tenho uma lista de nomes já gravados em um arq.txt,
estou tentando pesquisar o nome da pessoa, quero fazer algo parecido com


if (nome_procurado == grep -i) = true)

echo $Nome_do_procurado
else
echo nenhum nome encontrado!


caso tenha o nome que a pessoa quer, exiba, caso contrário, não!

agradeço!


7. Re: Grep mais loop

Paulo
paulo1205

(usa Ubuntu)

Enviado em 23/10/2012 - 00:25h

Todas as respostas acima são desnecessariamente complicadas. A forma simples de fazer é com a opção "-f" do grep. Leiam a documentação.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts