saida do grep [RESOLVIDO]

1. saida do grep [RESOLVIDO]

Carlos Fagiani Junior
terabytes

(usa Slackware)

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??!!


  


2. MELHOR RESPOSTA

Raimundo Alves Portela
rai3mb

(usa Outra)

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]

Geraldo Albuquerque
AprendiNoLinux

(usa Ubuntu)

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]

Carlos Fagiani Junior
terabytes

(usa Slackware)

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]

Raimundo Alves Portela
rai3mb

(usa Outra)

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]

Carlos Fagiani Junior
terabytes

(usa Slackware)

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.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts