Eu acho que isso é fácil, mas estou bloqueando ...
Eu tenho um diretório com uma série de arquivos de log (do servidor minecraft ...):
2014-09-28-1.log.gz
2014-09-29-1.log.gz
2014-09-30-1.log.gz
2014-10-01-1.log.gz
2014-10-02-1.log.gz
latest.log
Gostaria de extrair a data e a hora em que os usuários efetuaram login. No entanto, quando faço isso
gzcat *.gz | grep 'logged in'
Eu recebo uma saída assim:
[19:26:03] [Server thread/INFO]: Foo[/ip address] logged in with entity id 193955 at (location)
[18:26:08] [Server thread/INFO]: Baz[/ip address] logged in with entity id 194873 at (location)
[01:16:38] [Server thread/INFO]: User[/ip address] logged in with entity id 198895 at (location)
etc.
Infelizmente, enquanto recebo o carimbo de data / hora, não recebo a data. Idealmente, a saída seria
2014-10-03 19:26:03 Foo logged in
2014-10-04 18:26:08 Baz logged in
2014-10-05 01:16:38 User logged in
Eu reconheço que posso precisar e awk
script para chegar a essa saída "ideal". Mas existe uma solução abreviada (não awk) para obter apenas a data intercalada com a listagem? Algo parecido com isto:
2014-10-03-1.log.gz
[19:26:03] [Server thread/INFO]: Foo[/ip address] logged in with entity id 193955 at (location)
2014-10-04-1.log.gz
[18:26:08] [Server thread/INFO]: Baz[/ip address] logged in with entity id 194873 at (location)
2014-10-05-1.log.gz
[01:16:38] [Server thread/INFO]: User[/ip address] logged in with entity id 198895 at (location)
(ou seja, o nome do arquivo antes dos bits de grep dentro de cada arquivo) já seria muito útil.
Note que normalmente há muitas outras entradas em cada arquivo de log - pode haver vários logins e outras mensagens (que eu não estou interessado hoje).
Na forma mais curta, minha pergunta se torna:
Can I use gzcat
in a way that it prints the name of every zip file before passing the contents of that zip file to grep
for further processing?
Eu poderia escrever um script para fazer a coisa toda; mas eu estou procurando algo mais inteligente (eu queria saber se tee
pode ser usado para imprimir o nome do arquivo para stderr
, bem como passar como argumento para grep
, talvez.)