Grep 2

1. Grep 2

Marcelo Matos
zwe

(usa Ubuntu)

Enviado em 13/10/2015 - 17:33h

Caros;

Alguém sabe como faço uma busca com grep que contempla apenas um trecho de uma linha. Exemplo:

HOSTNAME unknown: SENDER carvalho@xxx.com.br: SUBJECT laudo de joana carvalho de siqueira

Queria buscar a string (carvalho) apenas no campo subject em diante e não no campo SENDER por exemplo.

Grato.




  


2. Re: Grep 2

Guilherme Isaac
guilhermisaac

(usa Arch Linux)

Enviado em 13/10/2015 - 17:49h

utiliza ele junto com o cut, escolhendo como delimitador o ":" que tem como padrão no seu arquivo, ou qualquer outro caractere que possa utilizar como delimitador
tipo
# cut -d: -f3 arquivo.txt
SUBJECT laudo de joana carvalho de siqueira

tendo em vista isso, tu trata o que tu quer com grep -o "carvalho"
# cut -d: -f3 arquivo | grep -o "carvalho"
--
Att

Guilherme Isaac


3. Re: Grep 2

Marcelo Matos
zwe

(usa Ubuntu)

Enviado em 13/10/2015 - 17:53h


Opa Guilherme, blz?

Então, mais como eu quero subir o restante das informações em uma base de dados, se eu cortar a linha com um delimitador, vou perder as informações restantes, tais como Hostname e Sender.

Queria que o grep ignorasse qualquer coisa que estivesse em hostname e sender e pegasse só o que estiver em subject, saca?

Da forma que ajudou, poderia fazer tb com awk, etc.

Abraços.


4. Re: Grep 2

Wellingthon Dias Queiroz - @tonyhts
tonyhts

(usa Arch Linux)

Enviado em 13/10/2015 - 18:36h

Olá,

Acho que im resolve:
egrep -i 'SUBJECT.*carvalho.*' arquivo.txt 



abs
---
Eu Acredito, que ás vezes são as pessoas que ninguém espera nada que fazem as coisas que ninguém consegue imaginar.

--- Mestre dos Mestres - Alan Turing ---


5. Re: Grep 2

Marcelo Matos
zwe

(usa Ubuntu)

Enviado em 13/10/2015 - 18:53h

Opa, tonyhts

Blz?

Deu certo da forma que vc postou, grato :)

Como eu uso uma variável na string a ser pesquisada, sabe me dizer o motivo de não localizar nada da forma que eu pesquiso abaixo?

while read line; do grep -i -w 'SUBJECT.*$line.*' temporario/filtrado-c.txt ; done < dicionario/c/c.txt

Se eu altero para aspas duplas, ele pega tudo, alem do Subject.

Grato pela ajuda.



6. Re: Grep 2

Perfil removido
removido

(usa Nenhuma)

Enviado em 13/10/2015 - 18:53h


problema de conceito:

grep = get regular expression print - pegue a expressão regular e imprima

a base do grep é a linha, ou seja, o fluxo (stream) é tratado a cada sinal de fim de linha.

Assim, o grep puro pode não fazer isso pois a LINHA com Carvalho em qualquer ponto combina com o critério.

Para isso existem opções como SED - Stream Editor - AWK e PERL que são a forma correta de tratar em nível de campo.

Agora se vai subir para um banco de dados, porque não subir e criar uma consulta depois? Faz sentindo não?




7. Re: Grep 2

Marcelo Matos
zwe

(usa Ubuntu)

Enviado em 13/10/2015 - 18:54h


Errata, onde lê grep é egrep.


8. Re: Grep 2

Marcelo Matos
zwe

(usa Ubuntu)

Enviado em 13/10/2015 - 18:59h


Olá kyetoy ;

Eu vou subir no banco após tratar o que eu quero. Não queria subir no banco e depois tratar.

A forma que nosso amigo anterior postou deu certo, "casou" com o que eu queria, e após casar, eu removo e subo no banco o que restou.

O AWK e o SED apenas deixa a coluna que contém a string, e apenas isso, não resolve o que quero desenvolver.

Grato por sua ajuda;

Abraços.


9. Re: Grep 2

Wellingthon Dias Queiroz - @tonyhts
tonyhts

(usa Arch Linux)

Enviado em 13/10/2015 - 19:09h

Opa,

Contanto que o caminho dos arquivos estajam corretos, basta colocar a variavel dentro de aspas simples. Assim:
while read line; do egrep -i -w 'SUBJECT.*'$line'.*' temporario/filtrado-c.txt ; done < dicionario/c/c.txt 


abs
---
Eu Acredito, que ás vezes são as pessoas que ninguém espera nada que fazem as coisas que ninguém consegue imaginar.

--- Mestre dos Mestres - Alan Turing ---


10. Re: Grep 2

Marcelo Matos
zwe

(usa Ubuntu)

Enviado em 13/10/2015 - 19:22h

Opa;

Colocando aspas simples ele passa a casar com o SENDER E COM O HOSTNAME. Mas se eu colocar alguma palavra no lugar da variável, pega direitinho, apenas o que estiver em SUBJECT.

Vou tentar dar meus pulos aqui. Vcs já me ajudaram muito.

Abraços.


11. Re: Grep 2

Wellingthon Dias Queiroz - @tonyhts
tonyhts

(usa Arch Linux)

Enviado em 13/10/2015 - 19:57h

zwe escreveu:

Opa;

Colocando aspas simples ele passa a casar com o SENDER E COM O HOSTNAME. Mas se eu colocar alguma palavra no lugar da variável, pega direitinho, apenas o que estiver em SUBJECT.

Vou tentar dar meus pulos aqui. Vcs já me ajudaram muito.

Abraços.


Estranho ! Não deveria casar , já que o egrep só casaria caso a expressao regular inteira "casasse".

Tenho mais 2 sugestões:

1) Ao copiar e colar, Cometi um GRAVE ERRO! esqueci de corrigir o egrep ao invés do grep. rs SOrry!
Corrigi o post, mas de qualquer forma, segue:
while read line; do egrep -i -w 'SUBJECT.*'$line'.*' temporario/filtrado-c.txt ; done < dicionario/c/c.txt 

2) O erro pode estar no seur arvio dicionario. Pode postar algumas linhas de exemplo?

abs

---
Eu Acredito, que ás vezes são as pessoas que ninguém espera nada que fazem as coisas que ninguém consegue imaginar.

--- Mestre dos Mestres - Alan Turing ---


12. Re: Grep 2

Marcelo Matos
zwe

(usa Ubuntu)

Enviado em 13/10/2015 - 20:04h


Eu tinha percebido o grep e inverti pelo egrep rsss

Então, meu arquivo (dicionario/c/c.txt) é um arquivo que contem mais ou menos 3 mil palavras. Elas começam com aspas duplas e terminam com aspas duplas. Para separar as palavras, coloquei um pipe (|). Então, como se eu buscasse varias palavras no grep via terminal, eu tratei dentro neste arquivo. Como não iria colocar 3 mil palavras em um terminal, coloquei em um arquivo.

Ele está assim, exemplo:

"casa|casamento|castelo|carro|colesterol|cortante|colar|............"

Tive que formatar assim o arquivo para conseguir dar o grep certinho. Só assim funcionou.

abs.



01 02



Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts