Pular para o conteúdo

saida do grep [RESOLVIDO]

Responder tópico
  • Denunciar
  • Indicar

1. saida do grep [RESOLVIDO]

Enviado em 11/04/2012 - 18:07h

Galera, como ficaria o comando abaixo pra para pegar a saida dele?

Nesse comando ele me retorna o caminho completo do arquivo que contenha a sequencia "2345860383" em seu corpo de texto.

grep -R 2345860383 /cygdrive/c/TAM/ | cut -d ":" -f 1

Basicamente ele lê todos os arquivos das pastas e sub-pastas. (-R)
Procura pelo texto nos arquivos, me retorna o arquivo com a informação da linha.

O 'cut -d' divide em antes e depois dos dois pontos ":".
O '-f 1' só exibe no terminal o que vier antes do dois pontos, que é o nome do arquivo.

Eu queria reutilizar essa saída em outro 'grep'.

grep -R 2345860383 /cygdrive/c/TAM/ | cut -d ":" -f 1 | grep DU <arquivo_informado_pelo_comando_anterior>

Alguém me explica qual comando usar??!!

Responder tópico

2. Re: saida do grep [RESOLVIDO]

Melhor resposta

Enviado em 11/04/2012 - 22:57h

xargs neles!!!!!!!!!!

grep -R 2345860383 /cygdrive/c/TAM/ | cut -d ":" -f 1 | xargs grep DU

O xargs pela o que recebeu como entrada e repassa para o comando à sua direita


vai retornar algo como :

arquivo: DU

Então faça novamente seus filtros com cut...

3. Re: saida do grep [RESOLVIDO]

Enviado em 11/04/2012 - 18:41h

terabytes escreveu:

grep -R 2345860383 /cygdrive/c/TAM/ | cut -d ":" -f 1
Basicamente entendi que o resultado do grep foram várias linhas. Depois vc pegou um campo qualquer que necessariamente pode conter infos diferentes. Até este ponto entendi.


terabytes escreveu:

grep -R 2345860383 /cygdrive/c/TAM/ | cut -d ":" -f 1 | grep DU <arquivo_informado_pelo_comando_anterior>

Alguém me explica qual comando usar??!!
Claro que vc pode realizar outro grep em cima do resultado que está na memória, mas apenas com os dados que estão a sua disposição, exemplo:

Vamos supor que o resultado fosse:


2345860383 /cygdrive/c/TAM/ 123435
2345860383 /cygdrive/b/TAM/ 343434
2345860383 /cygdrive/c/TAM/ 434344
2345860383 /cygdrive/d/TAM/ 34344
2345860383 /cygdrive/e/TAM/ 433
2345860383 /cygdrive/f/TAM/ 122455
2345860383 /cygdrive/g/TAM/ 23232
2345860383 /cygdrive/h/TAM/ 12323
2345860383 /cygdrive/j/TAM/ 3232
Com o resultado um outro grep só pode agir sobre os dados que tem em mãos.
Penso que o seu desejo seja fazer tudo em uma linha de comando. O find permite na varredura de diretórios e arquivos de forma recursiva executar comandos. O grep não. Awk permite construções mais robustas e engloba o grep, sed e até mesmo o find. Tem muita gente fera por aqui e talvez poderão te dar uma luz melhor.

Se você jogar um exemplo de arquivo com os dados como fiz agora talvez a galera pode tentar ajudar.




4. Re: saida do grep [RESOLVIDO]

Enviado em 12/04/2012 - 09:17h

grep -R 2345860383 /cygdrive/c/TAM/ | cut -d ":" -f 1 | xargs grep DU

Obrigado rai3mb funcionou perfeitamente para o que eu quero fazer.

Pensei até em fazer com o comando find, mas o grep -R pra mim no momento está excelente. porque os dados que busco estão sempre dentro do arquivo, e não no nome do arquivo...

Pra quem não entendeu o que eu queria fazer segue o exemplo:



$ grep.exe -R 4353453452 /cygdrive/c/TAM/ | cut -d ":" -f 1
/cygdrive/c/TAM/TIR/importados/@002333_importado_09879878778.APR
/cygdrive/c/TAM/TIR2/@0200173.APR
Com a implementação que o rai3mb passou ficou assim



$ grep.exe -R 4353453452 /cygdrive/c/TAM/ | cut -d ":" -f 1 | xargs grep DU | cut -d ";" -f 1,2
/cygdrive/c/TAM/TIR/importados/@002333_importado_09879878778.APR:KFTF; BRL68.10 DU DC
/cygdrive/c/TAM/TIR2/@0200173.APR:KFTF; BRL68.10 DU DC
Como o arquivo é todo separado por ";" coloquei mais um 'cut' com '-f 1,2', para só me mostrar o que tem dentro da primeira e da segunda separação com ponto e virgula.


Cygwin veio a calhar no Windows do serviço. :D

5. Re: saida do grep [RESOLVIDO]

Enviado em 12/04/2012 - 09:42h


...Cygwin veio a calhar no Windows do serviço. :D
Quebra um galho mesmo... NO serviço uso um Debian, monto os compartilhamentos de rede dos servidores windows que usamos ai posso usar o shell pra acessar e fazer o que for necessário...

Abraços

6. Re: saida do grep [RESOLVIDO]

Enviado em 12/04/2012 - 10:31h

Engraçado né, a algum tempo atrás todos eram loucos pelo wine e similares para conseguir rodar programas Windows no linux, agora todos querem o contrário.

Implantar linux no windows é o que está acontecendo agora...

Se a empresa que trabalho não fosse tão retrógrada, já tinha colocado tudo em linux aqui.

Responder tópico

Responder tópico

Entre na sua conta para responder.

Fazer login para responder