Logo Hardware.com.br
monthiel
monthiel Super Participante Registrado
488 Mensagens 1 Curtida

Dúvidas com o Grep

#1 Por monthiel 16/04/2008 - 16:05
Olá pessoal, boa tarde!

Estou com uma dúvida boba, mas não consigo pensar numa solução.
Ao digitar:
tail -f /var/log/mail.log me mostra

Apr 16 16:01:25 localhost postfix/pickup[25074]: 5844981C227: uid=109 from=
Apr 16 16:01:25 localhost postfix/cleanup[26053]: 5844981C227: message-id=<20080416190123.5081D81C215@dominio.com.br>
Apr 16 16:01:25 localhost postfix/pipe[25818]: 5081D81C215: to=, relay=clamav, delay=3, delays=2.7/0/0/0

Veja que a data é Apr 16, só que eu queria filtrar apenas os logs da data Apr 15 e não consigo. Vejam como estou fazendo.

tail -f /var/log/mail.log | grep '^[Apr 15]'
OU
tail -f /var/log/mail.log | grep '^Apr 15'
OU
tail -f /var/log/mail.log | grep 'Apr 15'

E nem uma delas está dando certo. Será se alguém ai tem uma idéia de como fazer esse filtro?

Obrigado!
pflynn
pflynn Ubbergeek Registrado
5.5K Mensagens 122 Curtidas
#4 Por pflynn
17/04/2008 - 09:10
DJ. disse:
não seria sem o ^ :
cat /var/log/mail.log | grep 'Apr 15'
ou
cat /var/log/mail.log | grep "Apr 15"
?



Seria melhor apenas:

grep "Apr 15" /var/log/mail.log

o cat é totalmente desnecessário aí (procure por UUOCAT - Useless Use Of Cat) .
------------------------------------------------
Muito bom. Mas tijolo não revida!
------------------------------------------------
DJ.
DJ. Zumbi Registrado
7.9K Mensagens 135 Curtidas
#8 Por DJ.
17/04/2008 - 18:53
jqueiroz disse:
Use "egrep" em vez de "grep", como o pflynn sugeriu na última mensagem. Deve ficar assim:

tail -f /var/log/mail.log | egrep '^Apr 15'

PS: "tail -f" não é UUoCat. wink.png


Mas ai com esse "tail -f" ele não só vai ler as ultimas 10linhas do log?
[thread=837873]Dúvidas sobre o fórum?[/thread] atencao_regras.gif

Mandriva|Omnislash(by Hqxriven)
Linuxer 470678

veja.pngGuia Linux(A-Z)
veja.png[thread=900907]MultiLiveCD/DVD(Linux)?[/thread]
veja.pngCompilando Kernel(Linux)
jqueiroz
jqueiroz Cyber Highlander Registrado
104K Mensagens 5.7K Curtidas
#9 Por jqueiroz
17/04/2008 - 19:16
Mas ai com esse "tail -f" ele não só vai ler as ultimas 10linhas do log?

Ele vai ler as 10 últimas linhas, depois vai ler todas as linhas que forem gravadas no arquivo daí pra frente, sem nunca mais terminar o programa. Você tem que terminá-lo com CTRL-C.

Assim, sempre que o sistema registrar uma nova linha de log, ela será passada pra seu filtro.
"chmod 777 nunca ajudou ninguém" (c) 2002-2021 JQueiroz/FGdH
Conheça o Blog do Zekke
DJ.
DJ. Zumbi Registrado
7.9K Mensagens 135 Curtidas
#11 Por DJ.
17/04/2008 - 19:45
Pelo que eu entendi o que ele quer é...
monthiel disse:
... só que eu queria filtrar apenas os logs da data Apr 15 e não consigo...

... e se esses logs não estiverem entre as 10 ultimas linhas? Com o "tail" num fica meio que dificil usar sem indicar quantas linhas finais ele deve ler(pra chegar no que se quer) não?
...
pflynn disse:
É possível que entre Apr e 15 exista mais de um caractere de espaço ou mesmo tabulações. Você precisa levar isso em consideração também:

egrep 'Apr[[:blank:]]*15' /var/log/mail.log
[thread=837873]Dúvidas sobre o fórum?[/thread] atencao_regras.gif

Mandriva|Omnislash(by Hqxriven)
Linuxer 470678

veja.pngGuia Linux(A-Z)
veja.png[thread=900907]MultiLiveCD/DVD(Linux)?[/thread]
veja.pngCompilando Kernel(Linux)
jqueiroz
jqueiroz Cyber Highlander Registrado
104K Mensagens 5.7K Curtidas
#12 Por jqueiroz
17/04/2008 - 20:00
tail -f /var/log/mail.log | grep Apr | grep 15


Isso vai encontrar também a seguinte linha: "Apr 1 kernel: last message repeated 15 times". wink.png

e se esses logs não estiverem entre as 10 ultimas linhas?

Aí ele faz um grep no arquivo inteiro... Lembrando que "tail" é uma coisa, "tail -f" é outra.

PS/EDIT: E "tail -100", uma terceira diferente das outras duas...
"chmod 777 nunca ajudou ninguém" (c) 2002-2021 JQueiroz/FGdH
Conheça o Blog do Zekke
© 1999-2024 Hardware.com.br. Todos os direitos reservados.
Imagem do Modal